运行Docker容器时如何附加到PATH环境变量?

flo*_*ree 5 docker

我想挂载一个卷并将其添加到容器的PATH环境变量中.我尝试过以下内容,但没有一个正在运行.

docker run -it -v $(PWD):/app -e PATH=$PATH:/app/bin debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='$PATH:/app/bin' debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='$$PATH:/app/bin' debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='\$PATH:/app/bin' debian:jessie bash
Run Code Online (Sandbox Code Playgroud)

如何将装载的卷附加到PATH?

Kiw*_*Lau 12

如果使用-e选项,则$ PATH值是主机的PATH而不是容器.

你可以这样做:

docker run -it -v $(PWD):/app debian:jessie bash -c 'export PATH=$PATH:/app/bin; bash'
Run Code Online (Sandbox Code Playgroud)

  • 这几乎可以正常工作。除非我必须用单引号替换双引号,否则它将使用主机的PATH而不是容器的PATH。 (2认同)
  • Docker run -c现在是--cpu-shares int CPU份额(相对权重) (2认同)

小智 6

您可以为导入的应用程序定义固定路径,并将新的应用程序路径添加到环境变量“ Path ”中

让我们选择你的路径“ /app ”。在您的 Dockerfile 中添加以下行:

ENV PATH=${PATH}:/app/bin
Run Code Online (Sandbox Code Playgroud)

构建修改后的 Docker

现在您可以访问位于<external Directory>/bin下的所有应用程序,这些应用程序通过挂载到“ /app ”

-v <external Directory>:/app
Run Code Online (Sandbox Code Playgroud)


use*_*247 5

在docker命令行中,您无法获得"运行时$ PATH的值".因此,您不能使用docker的-e标志将PATH附加到PATH变量.要实现您想要做的事情,您需要在脚本中执行此操作,该脚本将作为容器的cmd /入口点执行.