簡體   English   中英

如何將體積傳遞給 docker 容器?

[英]How to pass volume to docker container?

我正在運行以下 docker 命令:

docker run -d -v /Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo:/quantum-demo/ -it demo python3 /quantum-demo/circuit.py --res './'

我正在嘗試在 python 中運行上述命令,我的代碼如下:

container = client.create_container( image='demo', stdin_open=True, tty=False, command="python3 /quantum-demo/circuit.py --res='./'", volumes=['/Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo', '/quantum-demo/'], detach=True, ) client.start(container=container.get('Id'))

我無法看到運行 python 文件 (circuit.py) 時生成的文件。 這些文件是在我運行 docker 命令時生成的,當我使用容器 api 時,該文件在目錄中看不到。 我在使用客戶端創建容器中的卷時做錯了什么嗎? 謝謝!

我怎樣才能糾正上述問題,以便我可以正常 map 音量? 或者請告訴我如何使用docker卷,以便將docker文件夾中生成的文件復制到本地目錄(例如訓練后保存neural.network model)

謝謝!

嗨希望你做得很好!

所以你應該使用dict而不是list ,你也應該使用另一種方法。 一個例子如下:

import docker

client = docker.from_env()
client.containers.run(
    image="python",
    auto_remove=True,
    detach=True,
    tty=False,
    stdin_open=True,
    volumes={
        # path on your machine/host
        "/Users/volodymyr/Development/sandbox/stackoverflow/file.py": {
            "bind": "/mnt/file.py",  # path inside the container
            "mode": "rw",
        }
    },
    command=["python", "/mnt/file.py", "-w", "world!"],
)
# file.py
import argparse


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-w", "--word")
    args = parser.parse_args()

    print(f"Hello {args.word!s}.")

我在我的機器上測試了這段代碼並且它有效。 ( docker sdk 版本是6.0.1)

文檔: https://docker-py.readthedocs.io/en/stable/containers.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM