文章目錄
- 前言
- 一、Docker daemon ( Docker 守護行程 )Http代理配置
- 二、Container (容器)Http代理配置
- 1.全域配置
- 2.區域修改
- 三.代理為域名時的特殊處理
- 1.全域修改-通過修改 docker daemon 配置添加
- 2.區域修改-通過 docker run 引數添加
- 結尾
前言
有些公司因為網路安全管控,需要使用代理,Docker的代理配置,略顯復雜,下面描述多種場景的代理配置
一、Docker daemon ( Docker 守護行程 )Http代理配置
在執行docker pull時,是由守護行程dockerd來執行,因此,代理需要配在dockerd的環境中,而這個環境,則是受systemd所管控,因此實際是systemd的配置,
sudo mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
在這個http-proxy.conf(可以是任意*.conf的形式)檔案中,添加以下內容:
[Service]
Environment="HTTP_PROXY=http://賬號:密碼@服務器:埠"
Environment="HTTPS_PROXY=http://賬號:密碼@服務器:埠"
Environment="NO_PROXY=localhost,127.0.0.1"
重啟 docker
systemctl restart docker
二、Container (容器)Http代理配置
1.全域配置
在容器運行階段,如果需要代理上網,則需要配置~/.docker/config.json,以下配置,只在Docker 17.07及以上版本生效,
{
"proxies":
{
"default":
{
"httpProxy": "http://賬號:密碼@服務器:埠",
"httpsProxy": "http://賬號:密碼@服務器:埠",
"noProxy": "localhost,127.0.0.1"
}
}
}
重啟 docker
systemctl restart docker
這個是用戶級的配置,除了proxies,docker login等相關資訊也會在其中,而且還可以配置資訊展示的格式、插件引數等,
此外,容器的網路代理,也可以直接在其運行時通過-e注入http_proxy等環境變數,這兩種方法分別適合不同場景,config.json非常方便,默認在所有配置修改后啟動的容器生效,適合個人開發環境,在CI/CD的自動構建環境、或者實際上線運行的環境中,這種方法就不太合適,用-e注入這種顯式配置會更好,減輕對構建、部署環境的依賴,
2.區域修改
在 docker run 命令添加引數
docker run -d -p 9000:8080 -p 9001:50000 -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -u root \
--env HTTP_PROXY="http://賬號:密碼@服務器:埠" \
--env HTTPS_PROXY="http://賬號:密碼@服務器:埠" \
--env http_proxy="http://賬號:密碼@服務器:埠" \
--env https_proxy="http://賬號:密碼@服務器:埠" \
--name jenkins jenkins
三.代理為域名時的特殊處理
如果添加的代理是域名的話,如 proxy.neu.com:80, 需要再做一步額外的處理,
1.全域修改-通過修改 docker daemon 配置添加
在每個 container 運行前,會繼承 Docker daemon 的配置,在 /etc/docker/daemon.json 檔案下.# 為 docker daemon 添加 dns,在運行時會為每個 container 添加上
cat /etc/docker/daemon.json
{
"dns" : [
"8.8.4.4",
"8.8.8.8",
"Your_DNS_SERVER"
],
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
2.區域修改-通過 docker run 引數添加
docker run -d -p 9000:8080 -p 9001:50000 -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -u root \
--env HTTP_PROXY="http://賬號:密碼@服務器:埠" \
--env HTTPS_PROXY="http://賬號:密碼@服務器:埠" \
--env http_proxy="http://賬號:密碼@服務器:埠" \
--env https_proxy="http://賬號:密碼@服務器:埠" \
--dns 202.107.117.11 \
--name jenkins jenkins
結尾
- 感謝大家的耐心閱讀,如有建議請私信或評論留言,
- 如有識訓,勞煩支持,關注、點贊、評論、收藏均可,博主會經常更新博客,知識共享,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286862.html
標籤:其他
