docker - 将 docker run 转换为 python docker,传递环境变量的问题
问题描述
我正在尝试将以下 docker run 命令转换为 python docker run:
docker run -v ${HOME}/mypath/somepath:/root/mypath/somepath:ro -v /tmp/report/:/root/report -e MY_VAR=fooname DOCKER_IMAGE
这就是我到目前为止所拥有的:
client = docker.from_env()
client.containers.run(DOCKER_IMAGE, 'MY_VAR=fooname', volumes={
f'{home}/mypath/somepath': {'bind': '/root/mypath/somepath', 'mode': 'ro'},
'/tmp/report': {'bind': '/root/report', 'mode': 'rw'},
},)
但似乎我在传递 env 变量时遇到了问题
docker.errors.APIError: 500 Server Error: Internal Server Error ("OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"MY_VAR=fooname\": executable file not found in $PATH": unknown")
传递环境变量的正确方法是什么?
编辑
改成之后
client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], volumes={
f'{home}/mypath/somepath': {'bind': '/root/mypath/somepath', 'mode': 'ro'},
'/tmp/report': {'bind': '/root/report', 'mode': 'rw'},
},)
我收到了这个错误:docker.errors.ContainerError: Command 'None' in image
docker build 文件中声明了只运行 python 脚本的命令。
解决方案
该run()
方法的第二个参数是命令,而不是环境。如果您没有命令,则通过None
.
根据文档,environment
必须是字典或列表,因此在您的情况下:
client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], ...
推荐阅读
- c++ - 为什么我们没有用于地图的 hash 和 pred 函子?
- c - 在 C 中的变量中定义的数组大小无法在 IAR 中编译,但在 Keil 中构建良好
- javascript - JavaScript 滑动侧边栏菜单
- kubernetes - 在 Kubernetes Helm Chart 上为 SonarQube 配置 SMTP
- python - 为什么我在 url 中使用 slug 时没有加载静态文件?
- logstash-grok - 用于 kafka 日志的 Logstash grok 模式
- c# - 使用 AES 加密解密时填充无效且无法移除
- python-3.x - 使用 Pandas 和 FuzzyWuzzy 进行模糊字符串匹配,数据匹配:TypeError:不能在类似字节的对象上使用字符串模式
- php - Mpdf 无法打印欧元符号 (€)
- ocaml - “let rec (-) xy = y - x in 1 - 2 - 3” 是做什么的?