[英]Use container params in docker-py run
我在文档中找不到的一个基本问题,如何将容器参数传递给 docker-py run
function:
https://docker-py.readthedocs.io/en/stable/
我们可以在终端中运行下一行并且会起作用:
docker run -e POSTGRES_DB="db" -e POSTGRES_PASSWORD="postgres" -e POSTGRES_HOST_AUTH_METHOD="trust" -e POSTGRES_USER="postgres" postgis/postgis -c max_worker_processes=15
如果我们尝试使用 docker-py,我们可以这样做:
import docker
client = docker.from_env()
container = client.containers.run(
"postgis/postgis:latest",
environment = {
'POSTGRES_DB': "db",
'POSTGRES_USER': "postgres",
'POSTGRES_PASSWORD': "password",
'POSTGRES_HOST_AUTH_METHOD': "trust"
}
)
在那里我们可以将几乎所有参数发送到容器创建,但仍然找不到如何传递-c max_worker_processes=15
。 我们如何将该参数发送到容器?
run
function 有一个command
参数,但不起作用。 我尝试将其连接到图像名称,但没有。 我也找不到例子 D:
谢谢!
docker run
命令中镜像名称后出现的任何内容都被解释为容器设置的“命令”部分; 它覆盖了 Dockerfile CMD
,它可能被图像的ENTRYPOINT
特殊解释。 在各种 Docker SDK 中,您会将其作为command
参数传递。
具体来说,在 docker-py 中, client.containers.run()
方法采用command
关键字参数。 虽然文档说它接受字符串或列表,但如果您自己将命令拆分为单词列表并将该列表作为 arguments 传递,您将获得最一致的行为。(组装一个潜在的重大安全风险通过字符串插值的命令行,并使用列表也可以避免其中的许多问题。)
container = client.containers.run(
"postgis/postgis:latest",
command=['-c', 'max_worker_processes=15'],
environment={...}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.