Docker 網(wǎng)絡代理配置及防火墻設置的方法步驟
背景
在某些環(huán)境中,服務器無法直接訪問外網(wǎng),需要通過網(wǎng)絡代理進行連接。雖然我們通常會在 /etc/environment 或 /etc/profile 等系統(tǒng)配置文件中直接配置代理,但 Docker 命令無法使用這些配置。例如,在使用 docker pull 命令從外網(wǎng)拉取鏡像時,可能會遇到如下錯誤:
docker pull hello-world Unable to find image 'hello-world:latest' locally Pulling repository docker.io/library/hello-world docker: Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/hello-world/images. You may want to check your internet connection or if you are behind a proxy.. See 'docker run --help'.
解決方案
防火墻設置
在進行 Docker 代理配置之前,建議先檢查防火墻設置,確保相關端口已開放。以下是在 CentOS 7 上查看、防火墻狀態(tài)以及啟用/停用防火墻的方法:
查看防火墻狀態(tài):
systemctl status firewalld
示例輸出:

關閉防火墻:
systemctl stop firewalld

開啟防火墻:
systemctl start firewalld

禁用防火墻(防止開機自動啟動):
systemctl disable firewalld

啟用防火墻(設置為開機自動啟動):
systemctl enable firewalld

檢查已開放的端口:
firewall-cmd --list-ports
在進行 Docker 代理配置時,如果防火墻開啟,確保相關代理端口(如 2375, 1230)已通過防火墻放行。
方案一:通過手動啟動 Docker Daemon 設置代理
停止 Docker 服務:
systemctl stop docker.service
手動啟動 Docker Daemon,監(jiān)聽所有網(wǎng)絡接口:
nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &
更多詳情可參考 Docker Daemon Socket 選項。
方案二:配置系統(tǒng)級代理(不推薦)
可以通過修改系統(tǒng)配置文件來設置代理,如 Ubuntu 的 /etc/default/docker 或 CentOS 的 /etc/sysconfig/docker 文件,但這種方法已不再推薦使用。具體配置如下:
HTTP_PROXY="http://[proxy-addr]:[proxy-port]/" HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/" export HTTP_PROXY HTTPS_PROXY
方案三:持久化的 Docker 代理配置
這種方法將代理配置持久化,使其在 Docker 服務每次啟動時生效。
創(chuàng)建 Docker 服務的 systemd 配置目錄:
mkdir -p /etc/systemd/system/docker.service.d
創(chuàng)建代理配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf 并添加以下內(nèi)容:
[Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/"
如果有不需要使用代理訪問的內(nèi)部 Docker 鏡像倉庫,可以配置 NO_PROXY 變量:
[Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
重新加載配置:
systemctl daemon-reload
重啟 Docker 服務:
systemctl restart docker
更多細節(jié)請參考 Docker systemd 配置指南。
使用 SOCKS5 代理
要為 Docker 配置 SOCKS5 代理,可以按以下步驟操作:
編輯 Docker 服務文件 /usr/lib/systemd/system/docker.service:
[Service] Environment="HTTP_PROXY=socks5://127.0.0.1:1230/" Environment="HTTPS_PROXY=socks5://127.0.0.1:1230/" Environment="NO_PROXY=localhost,127.0.0.1,m1empwb1.mirror.aliyuncs.com,docker.io,registry.cn-hangzhou.aliyuncs.com"
重新加載服務配置并重啟 Docker:
systemctl daemon-reload systemctl restart docker
驗證代理配置:
systemctl show --property=Environment docker
如果輸出的內(nèi)容中包含 127.0.0.1:1230 這樣的地址,表示配置成功。
測試
可以通過 docker pull 命令測試代理配置是否生效:
docker pull gcr.io/kubernetes-helm/tiller:v2.2.2
使用 ss -antp |grep EST |egrep '1080|1230' 命令查看連接狀態(tài),確保代理配置已生效。
到此這篇關于Docker 網(wǎng)絡代理配置及防火墻設置的方法步驟的文章就介紹到這了,更多相關Docker 網(wǎng)絡代理配置及防火墻設置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
給docker創(chuàng)建的elasticsearch容器添加密碼簡單步驟
在使用Elasticsearch(ES)Docker容器時,有時需要設置密碼來保護數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關于給docker創(chuàng)建的elasticsearch容器添加密碼的簡單步驟,需要的朋友可以參考下2024-02-02
如何使用?Dockerfile?創(chuàng)建一個簡單容器
這篇文章主要介紹了如何使用?Dockerfile?創(chuàng)建一個簡單容器,Dockerfile?是用于指導?docker?創(chuàng)建自定義?image?的一系列指令,是用于創(chuàng)建?image?的藍圖,下文更多詳細介紹需要的小伙伴可以參考一下2022-04-04
docker生產(chǎn)環(huán)境jvm性能優(yōu)化方式
這篇文章主要介紹了docker生產(chǎn)環(huán)境jvm性能優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Docker容器使用jenkins部署web項目(總結(jié))
這篇文章主要介紹了Docker容器使用jenkins部署web項目(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

