詳解為 Docker 設(shè)置代理
因?yàn)楸娝苤脑?,Docker在國(guó)內(nèi)的使用舉步維艱。于是,很多組織在國(guó)內(nèi)提供了mirror或者叫加速器。
甚至在1.13的release note中提到微軟提供了官方的中國(guó)鏡像,然后我并沒有找到怎么啟用,找到了再寫。
使用這些鏡像或者加速器,拉取各種官方鏡像是ok了,自有的鏡像也可以放在國(guó)內(nèi)的registry。
但是官方鏡像只是滄海一粟,大量的組織或個(gè)人的鏡像都在docker hub,這一部分并沒有被鏡像同步。
于是,你還是需要一個(gè)代理。
本文假設(shè):
你已經(jīng)有一個(gè)http代理了
- Linux發(fā)行版的服務(wù)管理器使用的是systemd
- 本文寫于 Version 17.03.0-ce , 在 Docker 1.13 和 17.03 上是可以的,不排除將來有所改變
- 順帶說一句,Windows版的在 Settings 的圖形界面上直接可以設(shè)置代理。
關(guān)于systemd
很多人可能對(duì)systemd還不熟悉,但主流發(fā)行版已經(jīng)全都切換成systemd了,還是很有必要了解一下。
# 重啟docker $ sudo systemctl restart docker # 對(duì)應(yīng)的舊的命令,其實(shí)現(xiàn)在還是支持,效果和上一句一樣。 $ sudo service docker restart # 設(shè)置開機(jī)啟動(dòng) $ sudo systemctl enable docker
systemd是由文件夾/lib/systemd/system中的docker.service文件定義的。
我們隨便搜索一下systemd教程,就知道怎么樣自己編寫一個(gè)service文件了。
于是你可能躍躍欲試,把這個(gè)文件改一改,代理加進(jìn)去就好了嘛。
等等,不要著急,如果你自己在做一個(gè)自己的服務(wù),當(dāng)然是要自己直接寫這個(gè)文件了。但是,我們的docker是從官方源安裝的。
這意味著你現(xiàn)在改了這個(gè)文件雖然會(huì)生效,但是docker一升級(jí),這個(gè)文件又被覆蓋了呢。針對(duì)這個(gè)問題,systemd當(dāng)然也有解決方案。
你其實(shí)只需要?jiǎng)?chuàng)造一個(gè)叫 <something>.conf 的配置文件,名字隨便起,放在
/etc/systemd/system/docker.service.d 目錄。你就覆蓋了默認(rèn)的啟動(dòng)配置,并且它會(huì)作為你的用戶配置一直存在。
HTTP proxy
好了,現(xiàn)在我們可以開始加代理配置了。
默認(rèn)情況下這個(gè)配置文件夾并不存在,我們要?jiǎng)?chuàng)建它。
$ mkdir -p /etc/systemd/system/docker.service.d
創(chuàng)建一個(gè)文件 /etc/systemd/system/docker.service.d/http-proxy.conf
包含 HTTP_PROXY 環(huán)境變量:
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"
如果有局域網(wǎng)或者國(guó)內(nèi)的registry,我們還需要使用 NO_PROXY 變量聲明一下,比如你可以能國(guó)內(nèi)的daocloud.io放有鏡像:
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,daocloud.io"
刷新systemd配置:
$ sudo systemctl daemon-reload
用系統(tǒng)命令驗(yàn)證環(huán)境變量加上去沒:
$ systemctl show --property=Environment docker Environment=HTTP_PROXY=http://proxy.example.com:80/
萬事俱備,重啟docker,在外面的世界遨游吧:
$ sudo systemctl restart docker
ps. 本文只是對(duì)官方文檔的翻譯和簡(jiǎn)化,希望大家還是學(xué)會(huì)活用google,檢索官方文檔,比看博客更有時(shí)效性。也希望大家多多支持腳本之家。
相關(guān)文章
docker-compose管理容器network與ip問題
這篇文章主要介紹了docker-compose管理容器network與ip問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
利用寶塔面板和docker快速部署網(wǎng)站的基本流程
當(dāng)你有了一臺(tái)服務(wù)器,就會(huì)折騰往這臺(tái)服務(wù)器上部署各種好玩的網(wǎng)站,本文將以部署filebrowser舉例介紹網(wǎng)站部署的基本流程,感興趣的朋友一起看看吧2023-12-12
Linux搭建Docker環(huán)境的詳細(xì)過程(最新推薦)
Docker從17.03版本之后分為CE(Community Edition: 社區(qū)版)和EE(Enterprise Edition: 企業(yè)版),相對(duì)于社區(qū)版本,企業(yè)版本強(qiáng)調(diào)安全性,但需付費(fèi)使用,這里我們使用社區(qū)版本即可,這篇文章給大家介紹Linux搭建Docker環(huán)境的詳細(xì)過程,感興趣的朋友一起看看吧2025-04-04
Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng)
這篇文章主要介紹了Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
使用Docker部署Filestash文件管理器的實(shí)現(xiàn)步驟
Filestash是一款功能強(qiáng)大的網(wǎng)絡(luò)文件管理工具,它允許用戶在單一界面下管理分布于不同地點(diǎn)和平臺(tái)的數(shù)據(jù),本文就來介紹一下Docker部署Filestash文件管理器的實(shí)現(xiàn)步驟,感興趣的可以了解一下2025-07-07

