Yar*_*dan 5 environment-variables docker
尝试将一个值连接到我正在启动的 docker 容器中的现有环境变量。例如 -docker run -it -e PATH=$PATH:foo continuumio/anaconda
我目前正试图将一个值连接到PATH容器中已存在的现有环境变量。
PATH我期望在容器的环境变量中看到以下值-PATH=/opt/conda/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/scala/bin:/usr/local/sbt/bin:/usr/local/spark/bin:/usr/local/spark/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
相反,我得到这个 -PATH=$PATH:foo
使用docker run命令。无论如何可以实现我的目标吗?
- 编辑 -
我正在从 Windows 10 命令行窗口执行该命令。
请尝试以下操作:
docker run -it continuumio/anaconda /bin/bash -c "PATH=$PATH:foo exec bash"
Run Code Online (Sandbox Code Playgroud)
此命令bash在容器中启动,向其传递一个-c附加到现有命令的命令 ( ) $PATH,然后用继承新值的新bash副本 ( ) 替换自身。exec bash$PATH
如果您还想在更新的 shell 中执行命令,则可以将另一个-c选项传递给exec bash,但请注意,引用可能会很棘手,并且需要一个技巧来保持 shell打开:
docker run -it continuumio/anaconda /bin/bash -c "PATH=$PATH:foo exec bash -c 'date; exec bash'"
Run Code Online (Sandbox Code Playgroud)
需要注意的是,启动命令完成时运行的 shell 与运行该命令的实例不是同一实例(这应该不是问题,除非您的启动命令对 shell 状态进行了修改(例如定义必须保留的函数、别名等)。
至于你尝试过的:
设置环境变量的唯一方法是在容器外部提前知道-e该值;无论您传递给什么,都必须是文字值 - 它不能引用容器内的定义。-e
顺便说一句:如果您在 Unix 平台而不是 Windows 上运行命令,则当前shell 将扩展$PATH,这也不是意图。
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |