使用docker快速構建一個鏡像私有倉庫!

在上一篇文章去Docker Hub拉取MySQL鏡像等了半天,所以這篇來介紹一下怎麼快速搭建一個docker的鏡像私有倉庫,上一篇也提到為什麼要自己搭建鏡像私有倉庫,因為雖然目前Docker官方提供了一個公有的Docker鏡像倉庫,用戶只需要自行註冊一個賬號即可使用,但是對於企業用戶來說,公有倉庫是遠遠無法滿足需求的,無論從鏡像的安全性,還是從下載鏡像的速度,都讓使用Docker的企業用戶必須搭建自有的Docker私有倉庫。

介紹一下Docker Registry(倉庫),簡單的理解,它是一個用於集中存放Docker鏡像的地方。Docker Registry包括之前的V1,和現在的V2兩個版本,v1和v2不是簡單的版本升級,而是兩個獨立的項目,v1版本使用python開發,v2版本使用go開發,v2版本在安全性和性能方面都有了很大提升,v2版本支持後端插件化的存儲,鏡像可以存放在包括s3、azure、swift、oss、gcs、本地文件系統和內存中,極大的提供了便利。同時v2版本的Docker倉庫,在pull和push的時候都支持斷點,和多線程傳輸,以提高性能。具體的差別還有很多,可以參考官方文檔。

v2版本Docker倉庫有什麼不好嗎?最大的問題就是和v1不兼容。目前有些API還不夠完善,對於環境中既有Docker 1.6之前,又有Docker 1.6之後版本的用戶來說,就需要同時準備兩個Docker倉庫,並且做到兩個版本倉庫之間鏡像的相互轉換和同步。

本文拉取的registry是latest版的,目前的latest版本就是2.6.0版,所以本文是基於v2版本的。同時由於私有倉庫有認證和不認認證的,這裡為了方便就不進行認證的方式部署,後續如果有時間再填一下認證方式的坑~~~


1.拉取registry鏡像

在我們上一篇的基礎上,已經安裝好了docker,所以就直接輸入 docker pull registry,這裡鏡像沒有加標籤的話就默認是latest,如下圖:

使用docker快速構建一個鏡像私有倉庫!

2.啟動registry容器

很好拉取好了registry鏡像之後我們就可以直接啟動容器了,只需要輸入docker run --restart=always -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry:latest如下圖:

使用docker快速構建一個鏡像私有倉庫!

很好這樣我們就將docker的私有倉庫搭建好了,下面我們來驗證一下該倉庫是否可用。


3.測試鏡像倉庫

這時需要修改docker的配置文件,添加上docker的私有倉庫的地址,首先使用ip a 查到自己的本地的ip,比如我這裡是192.168.1.101,而我們regristry的容器映射到主機上的端口是5000,所以我們在配置文件裡面的OPTIONS裡面添加上--insecure-registry 192.168.1.101:5000,保存好之後再將docker重新啟動一下,service docker restart,如下圖:

使用docker快速構建一個鏡像私有倉庫!

使用docker快速構建一個鏡像私有倉庫!

很好這時我們將其中一個鏡像比如registry打個標籤,docker tag docker.io/registry:latest 192.168.1.101:5000/yunzhongmuge/registry:latest 這個命令是將docker.io/registry:latest這個鏡像改一下名稱變為192.168.1.101:5000/yunzhongmuge/registry:latest;然後將其push到我們剛剛的啟動的私有倉庫,如下圖:

使用docker快速構建一個鏡像私有倉庫!

非常好!這時我們的鏡像就已經推送到私有倉庫裡面了,後面我們需要拉取的話我們只需要將docker的配置文件添加上這個私有倉庫的地址就可以拉取了,比如我在另外一臺虛擬機裡面進行拉取,如下圖:

使用docker快速構建一個鏡像私有倉庫!

使用docker快速構建一個鏡像私有倉庫!



May you share freely, never taking more than you give.


都看到這裡,那就關注、評論、收藏、轉發一下唄!謝謝!


分享到:


相關文章: