我正在使用其他参数在一个停靠者应用程序中启动一个停靠者图像。使用docker可以完成
docker run -p 8888:8888 -v ~/:/tmp/home/ my_image my_start_cmd.sh --no-browser --ip=0.0.0.0
其中my_start_cmd.sh --no-browser --ip=0.0.0.0
是带参数的CMD。
如何使用相同的参数从docker-py api运行它?这是我使用docker api的原始python代码。
import docker
client = docker.from_env()
container = client.containers.run("my_image", detach=True)
for line in container.logs(stream=True):
print (line.strip())
要简单地将参数传递给docker CMD,使用参数传递完整命令,并使用端口映射作为dict作为ports参数就足够了,如下例所示:
import docker
client = docker.from_env()
container = client.containers.run(image='my_image',
command="start-notebook.sh --no-browser --ip=0.0.0.0",
ports={'8888': 8888}
)
要映射卷,作为原始命令行,必须使用新的Low Level API(docker.APIClient()),如下所示:
client = docker.APIClient()
container = client.create_container(
image='my_image',
stdin_open=True,
tty=False,
command="start-notebook.sh --no-browser --ip=0.0.0.0",
volumes=['~/', '/tmp/home/'],
host_config=client.create_host_config(
port_bindings={
8888: 8888,
},
binds={
' ~/': {
'bind': '/tmp/home/',
'mode': 'rw',
}
}),
ports=[8888],
detach=True,
)