【问题标题】:python docker api how do we set the path environment variable?python docker api 我们如何设置路径环境变量?
【发布时间】:2019-03-28 01:06:18
【问题描述】:

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

有人知道如何设置 PATH 环境变量,其他环境变量工作文件。

我看到以下错误 OCI 运行时执行失败:执行失败: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",

【问题讨论】:

  • 这听起来像设置环境变量工作正常,但搜索任何二进制文件的唯一容器路径是/usr/lib64/ccache,并且在该单个目录中没有bash 二进制文件。 (如果你想搜索/bin,它也需要在$PATH 中。)
  • 正如@DavidMaze 提到的,它可能是不正确的路径/路径不存在,检查 docker 日志(或)登录到新创建的容器并使用基本命令 ls -l yourpath 验证路径是否存在验证是否设置了其他环境变量。

标签: docker dockerpy


【解决方案1】:

请分享 api 详细信息(或)python 脚本的完整详细信息 - 这里它的最小包括您的 docker 文件(docker build cmd)。请参阅下面的语法以及您是否尝试覆盖 docker 映像设置的环境变量构建过程?

参考: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"}.

【讨论】:

  • (exitCode, socConn) = self.container.exec_run('bash -e build/otin/BashCheckGCCVersion.sh',socket=True,environment=["PATH=/usr/lib64/ccache" ])
【解决方案2】:

docker 镜像是否有bash 命令。尝试使用其他通用命令,例如 shls 而不是 bash

【讨论】:

    【解决方案3】:

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

    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 进入您的容器并执行 echo $Name_Variable。

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 2018-01-04
      • 1970-01-01
      • 2012-10-28
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多