回答
我與誰建議你實際上可能沒有想做什麼,你認爲你想做的評議同意。但是:
如果(a)您對具有特定前綴的環境變量感興趣,並且(b)您的變量不包含任何空格,則類似這樣的工作將會......在這裏,我將所有XDG_*
變量泊塢窗容器:
$ docker run -it --rm --env-file <(env | grep XDG) alpine sh
/# env | grep XDG
XDG_SEAT=seat0
XDG_SESSION_TYPE=x11
XDG_SESSION_ID=2
XDG_RUNTIME_DIR=/run/user/21937
XDG_MENU_PREFIX=gnome-
XDG_CURRENT_DESKTOP=GNOME
XDG_SESSION_DESKTOP=gnome
XDG_VTNR=2
如果你真的想所有環境變量,你可能需要編寫一個能產生正確引用輸出(處理包含空格的變量)更小的包裝程序,並這會排除跨越多行的內容,如BASH_FUNC_*
變量。然後你會用你的包裝代替前面例子中的env | grep ...
。
是否指定了遵循最佳實踐的env文件? – user1686342
我不確定如何回答這個問題,因爲我真的不知道你的用例。如果您有大量需要配置容器的環境變量,則環境文件對我來說似乎是一個好主意(而不是將它們全部放在命令行上)。或者使用docker撰寫來做類似的事情。但是,如果您正在設計自己的圖像,也有可能有更好的方式將任何必要的配置集成到容器中,而不是使用環境變量。 – larsks
謝謝您花時間回答這個問題,即使這種做事方式不正確。這個答案允許我在容器中運行'docker-compose',同時保持在我的撰寫文件中使用環境變量注入的能力:'MY_VAR = derp docker-compose up' –
有兩種方法可以使用-e標誌:-e VAR = VALUE和-e VAR;如果VAR已經導出,那麼第二種格式將使用導出的值而不會使其公開可讀,另外您無需擔心會針對空格,引號等轉義VALUE。
因此,如果您真的想要通過在所有輸出變量到你的容器,試試這個:
docker run ... $(env | cut -f1 -d= | sed 's/^/-e /') ...
- 1. 如何將多行變量傳遞給碼頭集裝箱?
- 2. 碼頭集裝箱沒有TMPDIR環境變量
- 3. 如何將系統屬性傳遞給碼頭集裝箱?
- 4. Jenkins將所有環境變量傳遞給腳本
- 5. 鏈接碼頭集裝箱與主機
- 6. 將環境變量傳遞給XMonad spawn
- 7. 將環境變量傳遞給myrepos(mr)
- 8. 將環境變量傳遞給angular2庫
- 9. 如何了很多竹子變量傳遞給碼頭工人集裝箱?
- 10. 傳遞給碼頭集裝箱的選項
- 11. 連接到碼頭集裝箱碼頭主機上的服務
- 12. 從碼頭集裝箱連接到主機上的碼頭0
- 13. 將URL傳遞給具有UIWebView的UIViewController的最簡單方法
- 14. 將Docker部署到遠程主機時傳遞環境變量
- 15. 檢查碼頭集裝箱FS從主機變化
- 16. 無法連接到Docker主機以外的碼頭集裝箱
- 17. 無法解析碼頭集裝箱之間的主機名
- 18. 將環境變量傳遞給多個配置文件的最佳方式
- 19. 什麼是將環境變量傳遞給TestNG for Automation的最佳方式
- 20. 將主機端口轉發到碼頭集裝箱
- 21. 如何將文件從碼頭集裝箱共享到主機
- 22. Masstransit無法從碼頭集裝箱訪問主機RabbitMQ
- 23. 退出並刪除所有但最新的碼頭集裝箱
- 24. 將環境變量傳遞給ant任務,沒有ANT_OPTS
- 25. 碼頭工人:將主機端口映射到多個碼頭集裝箱
- 26. 用supervisord管理碼頭集裝箱的最佳方法
- 27. 如何將廚師數據包祕密傳遞給碼頭集裝箱?
- 28. 將環境變量傳遞給exec shell命令的正確方法
- 29. 部署最新的碼頭集裝箱
- 30. 傳遞環境變量
這可能是一個可怕的想法。什麼是用例? – johnharris85
不需要創建額外的文件來管理配置,因此需要更新每個人都需要一個新的環境變量 – user1686342
您可以詳細說明嗎?如果你有這麼多(動態?)配置,可以看看像領事/領事模板等......? – johnharris85