我正在使用 docker-py SDK,我需要在containers.run.
我需要的:
MYDIR = '/variable/dir'
MYURL = 'https://example.com'
client = docker.from_env()
container = client.containers.run(image="alpine:latest", name="container", user="1000", volumes=['MYDIR:/tmp'], command=["/bin/sh", "echo MYURL"])
我得到了什么:一個接一個的錯誤。
如您所見,我需要將變數放在volumes和command的引號內。
我嘗試了各種組合,但沒有任何運氣:帶引號,不帶引號,使用 str 連接等......
知道如何解決這個問題嗎?
提前致謝。
uj5u.com熱心網友回復:
您想將變數中的字串與另一個字串組合。在 Python 中有很多方法可以做到這一點。最新的方法稱為 f-strings,就語法而言,它非常接近您的“在引號內傳遞變數”(盡管這是對實際發生的事情的過度簡化)。
例如:
container = client.containers.run(image="alpine:latest",
name="container", user="1000", volumes=[f'{MYDIR}/tmp'],
command=["/bin/sh", f"echo {MYURL}"])
請注意,我們在其中插入了變數的每個字串 1) 在開始f引號之前以 a 開頭(因此“f-strings”——f即用于格式化)和 2) 將變數放在{...}括號中。實際上,您可以在括號內使用任何運算式,而不僅僅是單個變數名。
uj5u.com熱心網友回復:
解決您的問題的關鍵是了解為什么會發生此錯誤:
錯誤請求("create MYDIR/resources: "MYDIR/resources" 包含本地卷名的無效字符,僅允許 "[a-zA-Z0-9][a-zA-Z0-9_.-]"。如果你打算傳遞一個主機目錄,使用絕對路徑”)
在此錯誤中,實際上沒有任何地方需要您“將變數放在卷和命令的引號內”。您實際需要做的是修復路徑字串(稱為“引號”)以包含錯誤訊息中正則運算式指定的有效卷名。
因為您審查了 MYDIR,所以我無法為您提供進一步的幫助,說明您為什么會收到無效的卷名錯誤。也許您可能有一條帶有未轉義空格等的路徑...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495862.html
下一篇:如何阻止變數成為本地變數?
