2016-11-21 145 views
1

是否可以設置env。所有未來Docker容器的變量?爲所有Docker容器設置全局環境變量

這將有助於針對特定主機設置HTTP代理,而不改變泊塢窗圖像文件或運行容器的方式(以便同泊塢容器可以運行在不同的「上下文」罰款)。

也許通過/etc/default/docker

回答

0

泊塢構成使用變量替換,所以你可以在一個碼頭工人,撰寫文件中使用主機變量:

如果你的bash命令已經定義了一個名爲EXTERNAL_PORT變量。

web: 
    build: . 
    ports: 
    - "${EXTERNAL_PORT}:5000" 

檢查:https://docs.docker.com/compose/compose-file/#variable-substitution

而且在代理我猜使用HTTP_PROXY應該是默認重定向如果在當前shell會話定義的交通情況。

export http_proxy=http://10.203.0.1:5187/ 
export https_proxy=$http_proxy 
export ftp_proxy=$http_proxy 
export rsync_proxy=$http_proxy 
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" 

類似的東西應該重定向所有的HTTP流量,可以從.bashrc設置。從來沒有測試與碼頭讓我知道它是否工作。

+0

我不是在談論泊塢窗,撰寫一個系統級代理,對不起。 –

+0

@ThomasDecaux那麼你應該嘗試'HTTP_PROXY'是不相關的泊塢窗或碼頭,構成用於配置代理,它只是一個Linux環境變量。還有一個窗口對應它。我將創建一個自定義用戶來運行配置了所有環境變量的映像。 – Marcs

0

如果你不使用泊塢窗,撰寫的榨渣說,則沒有。

Dockerfiles創建二進制文件。任何未在dockerfile(或docker-compose yaml或docker build)中指定的東西都不會進入容器。這是出於許多安全原因以及一般性的最佳實踐,因爲人們可能會導致這些容器依賴主機本身。無論是使用泊塢窗,撰寫做你的建築物或可考慮更改主機本身會影響泊塢窗容器的那層如影響到172子網

+0

Dockerfile創建映像,通過docker run運行嗎?我想自動通過''docker run -e K1 = V1 ...''。所以開發人員不關心代理。 –