我正在尝试使用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",
答案 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
命令。尝试使用其他通用命令,例如sh
,ls
而不是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。