Docker 代理配置

大俗XD發表於2024-11-01

不提供代理,只是在有代理伺服器的情況下一些 Docker 代理配置。

關於 docker run 報錯

正常安裝 docker 完畢後,可以使用
docker run hello-world

來執行,但是發現報錯

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

建立配置檔案

sudo mkdir /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

我的 代理只有 http 和 socks代理 ,這裡面http 和 https 填一致即可。

[Service]
Environment="HTTP_PROXY=http://YourProxy/"
Environment="HTTPS_PROXY=http://YourProxy/"

關於 docker pull 報錯

Using default tag: latest
latest: Pulling from library/redis
Get "https://registry-1.docker.io/v2/library/redis/manifests/sha256:d2ff3ceb3ef5317df7d224fc019687705276b4b1f8b37033c12e35bbe94b0514": net/http: TLS handshake timeout

我的解決方案是 使用 proxychains。

# step1
sudo yum install -y git gcc make
# step2
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config

新增配置

vi /etc/proxychains.conf

#該配置 結尾新增
http  YourHTTPProxyIP YourHTTPProxyPort
socks4  YourSocksProxyIP YourSocksProxyPort

最後執行你的命令前假加上 proxychains4

proxychains4 docker pull redis

雖然不知道第一個為什麼不能解決pull 。個人猜測是 docker 不支援 socks代理。

最後配置代理

相關文章