我只是在嘗試配置 Dockerfile-
FROM ubuntu:latest
RUN apt-get update
RUN echo VERSION_TAG="latest" >> /etc/environment
RUN cat /etc/environment
CMD echo $VERSION_TAG
我使用(我在 req 目錄中)構建了影像 -
docker build -t temp/testing:latest .
運行它使用 -
docker run temp/testing:latest
預期產出-
latest
實際輸出-
在構建影像時,輸出cat /etc/environment
Step 4/5 : RUN cat /etc/environment
---> Running in 4grdc7b5165a
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
VERSION_TAG=latest
它存在于 env 變數中,但它的值沒有被列印出來,任何幫助將不勝感激。
注意 - 我想在不使用
https://docs.docker.com/engine/reference/builder/#env的情況下做到這一點
uj5u.com熱心網友回復:
我需要知道原因。
Docker 只是exec()命令ENTRYPOINT CMD之間沒有任何內容。
pam未加載,因此pam_env.so未加載,因此/etc/environment未讀取。
uj5u.com熱心網友回復:
目的是ENV用于此,但您可以在命令列上設定額外docker run 引數-e
docker run -it -e VERSION='latest' -e NAME='abcd' ubuntu:latest /bin/bash
或者,您可以為每行的每個變數提供一個檔案
docker run -it --env-file ./my_env ubuntu:latest /bin/bash
您還可以使用 進行卷掛載-v,這可以將更多資訊和整個路徑偷運到容器中,包括對您在其中運行的任何應用程式有用的資訊(Docker 容器的目的通常是在已知環境中運行單個應用程式)
但是,如果您嘗試確定容器是否正在運行其自己的最新版本的 tag,這將是有問題
的 具體來說,該 tag 可能會改變,但您的顯式設定不會!..對于這種情況,您應該考慮其他事情,例如有一個外部行程,當標簽更改時用新容器替換正在運行的容器(因此您可以假設正在運行的內容總是latest)或以某種頻率(可能每天在早晨)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438360.html
上一篇:Docker構建命令無法運行
