我試圖在泊塢窗圖像中設置我們的生產環境。 花了一些時間編譯軟件後,我意識到我忘了在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