python docker api我们如何设置路径环境变量?

时间:2019-03-28 01:06:19

标签: docker dockerpy

我正在尝试使用python docker api在容器内设置PATH环境变量,但似乎不起作用,容器未启动

有人知道如何设置PATH env变量,其他env变量有效吗?

我看到以下错误 OCI运行时exec失败:exec失败:container_linux.go:344:启动容器进程导致“ exec:\“ bash \”:在$ PATH中找不到可执行文件“:未知

(exitCode, socConn) = self.container.exec_run('bash -e build/otin/BashCheckGCCVersion.sh',socket=True,environment=["PATH=/usr/lib64/ccache"]) 

 or


 environment=[
        "CCACHE_DIR=/work/.ccache",
        "PATH=/usr/lib64/ccache",
        "BUILDS_ALL_TIME=" + sys.argv[2],
        "PATCH_10.2=" + sys.argv[1]],
    working_dir="/OTINBuild",

3 个答案:

答案 0 :(得分:0)

请共享api详细信息(或python脚本的全部详细信息),此处最小化包括您的docker文件(docker build cmd)。有关语法以及是否尝试覆盖docker image设置的环境变量,请参阅以下内容建立过程?

参考:https://docker-py.readthedocs.io/en/stable/api.html

exec_create(container, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user='', environment=None, workdir=None, detach_keys=None)


environment (dict or list) – A dictionary or a list of strings in the following format ["PASSWORD=xxx"] or {"PASSWORD": "xxx"}.

答案 1 :(得分:0)

泊坞窗映像是否具有bash命令。尝试使用其他通用命令,例如shls而不是bash

答案 2 :(得分:0)

如果您使用字典来设置环境变量,它将像这样工作:

environment = {"Name_Variable":"Name_Path","Name_Variable2":"Name_Path2"...}
(exitCode, socConn) = self.container.exec_run('bash -e build/otin/BashCheckGCCVersion.sh',socket=True,environment=environment)

如果您尝试使用以下命令查看它是否有效:

docker exec -it "Name_Container" echo $Name_Variable

它不会显示您的价值。

终端正在执行$ Name_Variable,然后将其“发送”到Docker。

您必须使用bash进入容器并回显$ Name_Variable。