搭建docker私有鏡像倉庫


一、前言

  一般來說,我們都是通過docker hub、阿里雲鏡像倉庫或者是其他的鏡像倉庫里拉取鏡像,並且來使用的,雖然會帶來一定的便捷性,但同時也會帶來兩方面的問題,一是他們走的是公網,速度不夠快,二是假如公司的業務是做金融、證券或其他隱私行行業的話,會有一定的安全性問題,所以,搭建公司的私有鏡像倉庫就顯得很有必要。

二、具體步驟

1、拉取registry鏡像

docker pull registry:2

2、配置私有倉庫地址

vim /etc/docker/daemon.json

輸入如下參數,注意修改為自己的ip地址:

"insecure-registries": ["10.211.55.4:5000"]

:wq 保存退出,然后我們重啟啟動一下 docker

systemctl restart docker

3、創建容器

docker run -d -p 5000:5000 --restart=always --name registry registry:2

部分參數說明:

  • -d:讓容器在后台運行
  • -p:指定容器內部使用的網絡端口映射到我們使用的主機上
  • --name:指定容器創建的名稱
  • --restart:容器本身或者是docker進程重啟時,會一並重啟

容器運行命令的其他參數說明:

  • --network 指定容器運⾏的⽹路模式
  • -v 指定需要掛載的數據卷
  • -env 指定需要傳遞給容器的環境變量

4、重新加載配置

sudo systemctl daemon-reload

然后瀏覽器訪問:http://10.211.55.4:5000/v2/_catalog

 

 如果訪問不到,嘗試關閉防火牆:

systemctl stop firewalld

如果還是訪問不不到,可以重啟一下docker

sudo systemctl restart docker

然后重新運行一下容器

5、驗證上傳鏡像到私有倉庫

我們使用HelloWorld鏡像進行測試,首先先拉取一下:

docker pull hello-world

 

 拉取之后我們看一下鏡像名稱及版本:

 

 至此我們就有了一個 hello-world鏡像,接下來我們使用 push 指令將鏡像推送到剛剛搭建的registry中:

# 標記hello-world該鏡像需要推送到私有倉庫
docker tag hello-world:latest 127.0.0.1:5000/hello-world:latest

# 通過push指令推送到私有倉庫
docker push 127.0.0.1:5000/hello-world:latest

 

 再來訪問:http://10.211.55.4:5000/v2/_catalog

 

 我們可以看到私有倉庫目錄已經有剛剛推送上去的 hello-world 鏡像了

6、驗證從私有倉庫下載鏡像

驗證完了上傳,我們再來測試一下下載鏡像

# 格式如下:
docker pull 127.0.0.1:5000/鏡像名稱:鏡像版本號

# 以hello-world為例:
docker pull 127.0.0.1:5000/hello-world:latest
#或者是
docker pull  10.211.55.4:5000/hello-world:latest

 

 通過ip也是可以拉取成功的,但是在這再額外補充一下,有的小伙伴可能提示如下:

 

 這種顯然是拉取失敗了,提示大致就是,嘗試從https上拉取,但是返回的是http響應,如何解決呢?

我們可以通過如下進行處理一下,xxx修改為自己的ip地址:

echo '{ "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }' > /etc/docker/daemon.json

至此整個搭建過程完畢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM