我试图在泊坞窗图像中设置我们的生产环境。 花了一些时间编译软件后,我意识到我忘了在Dockerfile中设置语言环境变量。Docker中的环境变量
有没有办法永久提交环境变量到图像? 我只是遇到了dockerfile这样做的方式,我不想从中重建并丢失所有已完成的工作。
在.bashrc
中设置这些变量不起作用,因为docker run命令似乎忽略了这些设置。
我试图在泊坞窗图像中设置我们的生产环境。 花了一些时间编译软件后,我意识到我忘了在Dockerfile中设置语言环境变量。Docker中的环境变量
有没有办法永久提交环境变量到图像? 我只是遇到了dockerfile这样做的方式,我不想从中重建并丢失所有已完成的工作。
在.bashrc
中设置这些变量不起作用,因为docker run命令似乎忽略了这些设置。
有没有办法永久提交环境变量到图像?
那就是directive ENV
in Dockerfile。
ENV <key> <value>
ENV <key>=<value> ...
但既然你不想重建图像(虽然你可以在dockerfile结束大部分图像构建添加它,并benefit from the cache),你仍然可以用docker run -e "variable=value"
您可以在“docker commit”操作期间更改环境变量以修改现有图像。请参阅https://docs.docker.com/engine/reference/commandline/commit/和此StackOverflow问题答:Docker Commit Created Images and ENTRYPOINT - 并参考sxc731的答案。我不清楚如何设置多个Env变量,但它可能需要单独更改 - 每个变量。
这里是什么,我只是在做(bash shell中)的例子:
docker run -it --entrypoint /bin/bash $origimghash
# make changes, leave running, then in another shell:
EP='ENTRYPOINT ["python","/tmp/deploy/deploy.py"]'
ENV='Env no_proxy "*.local, 169.254/16"'
docker commit "--change=$ENV" "--change=$EP" $runninghash me/myimg
docker inspect -f "{{ .Config.Env }}" $newhash
您_will_必须重建,迟早的事。所以你最好开始自动化配置。 –
您使用的是什么版本的docker?在哪个操作系统?你使用的是什么'docker run'选项? – VonC
@VonC我正在使用版本1.11.2。目前我只是附加到容器上,执行apt-get install,手动编译东西并将更改提交到我的映像中。我仍然在学习如何正确使用docker ... – KahPhi