道理很簡單,咱們在使用Docker的時候,常常須要使用到docker pull命令從docker hub拉取咱們須要的鏡像,進行操做。這樣其實有利也有弊,docker hub是官方維護的公用倉庫,也是最大、最全的docker鏡像倉庫。每一個人有一個docker hub的帳號便可將本身的上傳到docker hub上,方便隨時拉取使用。可是docker hub有個弊端就是受網絡帶寬影響,有時候下載速度稍微有些很差。docker官方呢,在docker hub上提供了一個registry鏡像,咱們使用這個鏡像就能夠搭建一個私有的註冊服務器。咱們能夠經過把經常使用的鏡像都放到私有的registry上,這樣就避免了常常去docker hub上拉取的操做,效率能夠獲得必定的提升。固然實際工做,咱們不必定須要,由於docker hub能夠提供咱們大部分的需求。python
環境:docker001上搭建registry、docker002當作測試客戶端。docker
使用docker001搭建registry服務器
docker pull registry#拉取registry鏡像 docker run -d -p 5000:5000 --restart=always -v /opt/registry:/var/lib/registry registry #啓動一個registry容器,-d守護態運行、 -p將docker的5000斷開和registry的5000端口進行映射、 自啓動、 指定registry的/var/lib/registry/目錄映射docker001的/opt/registry/目錄(至關於掛載)
firewall-cmd --add-port=5000/tcp --permanent#開放docker001的5000端口 firewall-cmd --reload
下圖是驗證方法網絡
在啓動registry時咱們加了參數-v /opt/registry:/var/lib/registry,這裏就是下面要驗證的地方。tcp
docker002上測試ide
dockers registry V2 版本客戶端默認使用https協議去push鏡像到倉庫服務 器,而如今咱們的倉庫服務器只配置了支持http,因此客戶端會push鏡像失敗。如要但願docker客戶端支持http協議,需在啓動docker時加入參數--insecure-registry your_registry_ip:port 。直接編輯/usr/lib/systemd/system/docker.service文件修改便可,以下。測試
而後從新加載daemon、重啓docker。spa
systemctl daemon-reload systemctl restart docker.service
首先先打上標籤,不然docker會默認將鏡像上傳到docker hub上。3d
執行push命令將docker002本地的鏡像上傳到docker001上的registry。rest
回到docker001,咱們進入到/opt/registry,查看是否成功上傳(目錄層級不少,一層一層往下找就能夠看到了)
既然能上傳,那麼相應的,拉取操做也應當能夠。
首先我在registry上傳了一個鏡像registry:001
在docker002上
使用pull命令拉取鏡像
這樣咱們搭建私有registry的工做就完成,在企業內部搭建一個私有的registry,這樣各部門員工使用鏡像就方便多了。也有利於公司數據、研發成果的保密。