我發生了一些有用的信息,它提示我有一個可以在Dockerfile中使用的內置環境變量$HOSTNAME
。在相當數量的搜索中,我無法找到這種內置變量的全面列表。 Dockerfile參考解釋瞭如何使用ENV
命令來修改環境變量,但我現在沒有必要這樣做。我只是想知道默認情況下有什麼可用的。有沒有這方面的官方文件?我認爲應該有,並在HOSTNAME
做一些搜索會指向我,但沒有骰子。Dockerfile內置的環境變量文檔
回答
我只想知道默認情況下有什麼可用的。
這取決於每個圖像。您可以看到哪些變量是在每一個規定這樣做:
docker run <image> env
或者:
docker inspect <image> -f '{{.Config.Env}}'
例如:
$ docker run ubuntu env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=71fc7d5db1f2
no_proxy=*.local, 169.254/16
HOME=/root
$ docker inspect ubuntu -f '{{.Config.Env}}'
[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]
或者:
$ docker run node env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=42bbb311714a
no_proxy=*.local, 169.254/16
NPM_CONFIG_LOGLEVEL=info
NODE_VERSION=7.10.0
YARN_VERSION=0.24.4
HOME=/root
$ docker inspect node -f '{{.Config.Env}}'
[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NPM_CONFIG_LOGLEVEL=info NODE_VERSION=7.10.0 YARN_VERSION=0.24.4]
PS:你可以在運行容器時做同樣的事情:
docker inspect <container-id> -f '{{.Config.Env}}'
docker exec <container-id> env
我猜大部分發生在https://github.com/moby/moby/blob/34536c498d56a0c74fab08bd434407ac4707c971/container/container_unix.go#L57-L72。我不會說$HOSTNAME
是Docker特有的東西。在大多數Linux發行版中很常見,並且有很多腳本/ shell使用它。由於Docker沒有運行一個完整的初始化系統,它可以在啓動時設置主機名變量(比如Ubuntu上的/etc/init.d/hostname.sh),因此確保它爲您設置。
如果您指定tty(-t
),它們看起來像設置了默認的$PATH
和$TERM
。除了可以指定自己的環境變量之外,當您使用--link
鏈接另一個容器(現在已棄用的功能)時,還會獲得一堆可用的環境變量。見https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#environment-variables。
好東西。偶然你知道在運行羣集和/或使用覆蓋網絡時是否存在類似的變量?現在對我有用的一件事是節點的IP地址。它只是在一個環境變量中,這將是非常方便的。 – JimmyJames
我不知道Swarm是否有單獨注射。您可能只需將內置於圖像中的變量與實際運行輸出進行比較,以查看注入的內容。如果沒有深入研究代碼,它可能很難找到(並且可能沒有記錄在任何地方,因爲搜索已經顯示)。 –
- 1. Dockerfile和環境變量
- 2. 獲取Dockerfile中的環境變量值
- 3. 在DockerFile中使用Dokku環境變量
- 4. Dockerfile忽略PATH環境變量
- 5. 關於SEE_MASK_NOZONECHECKS環境變量的文檔
- 6. 如何在Dockerfile中設置.bash_profile環境變量?
- 7. 設置環境變量內目標
- 8. 串內插環境變量
- 9. 燒瓶/ gunicorn:從環境變量設置環境變量
- 10. 從另一個Jenkins環境變量設置Jenkins環境變量
- 11. 設置環境變量
- 12. 設置Maven環境變量
- 13. 設置Java環境變量?
- 14. 設置apache環境變量
- 15. 設置環境變量
- 16. DrJava設置環境變量
- 17. C設置環境變量
- 18. 設置環境變量
- 19. C#設置環境變量
- 20. 設置環境變量(kubernetes)
- 21. 設置環境變量Windows
- 22. htaccess設置環境變量
- 23. Elasticsearch設置環境變量
- 24. 設置環境變量Linux
- 25. NLog環境變量配置文件
- 26. Windows環境變量與配置文件
- 27. 配置文件沒有環境變量
- 28. 在dockerfile正確設置Perl環境
- 29. Web上下文根是否有內置的Spring環境變量?
- 30. Windows 10環境變量的文檔文件夾
這有很大的幫助。作爲一個筆記,我得到不同的跑步指令答案並檢查阿爾卑斯山。運行命令給出3個值,檢查只給出其中的一個。 – JimmyJames
「碼頭運行」版本運行一個新的容器來執行'env'。 Docker似乎運行提供HOSTNAME的新進程,這是docker run參數'--hostname'因爲docker設置的一個特殊變量。我認爲在圖像中擁有該變量沒有意義,因爲它與基於相同圖像的多個容器不同。 – Robert
您正在尋找我試圖找到的關鍵。這些值是碼頭引擎只能知道的事情,因爲它正在管理這些值。儘管我現在想要解決的問題基本上是人爲設計的,但能夠擁有默認提供的上下文是有用的。 – JimmyJames