docker學習-構建本地Registry

保存和分發鏡像的最直接的方法就是使用Docker H u b,它是Docker公司維護的公共Regsitry,用戶可以將自己的鏡像保存到Docker H u b 免費的repository中。如果不希望別人訪問自己的鏡像,也可以購買私有repository.
一般我們可以使用Docker H u b上傳和下載鏡像,雖然十分方便,但是還是有些限制,比如:
1、需要外網連接,而且上傳和下載速度慢
2、上傳到Docker H u b 的鏡像任何人都能夠訪問,雖然可以用私人repositroy,但不是免費的
3、因爲安全原因很多組織不允許將鏡像放到外網

解決方法是單間本地的Registry。
Docker已經將Registry開源了,同時在Docker H u b上也有官方的鏡像Registry。
我們可以在Docker中運行自己的Registry

使用dockerfile構建httpd

在使用倉庫之前,首先我們構建一個httpd鏡像,保存到本地中
首先創建dockerfile目錄和創建dokcerfile文件

cd ~
mkdir dokcerfile 
cd dockerfile
touch dockerfie

按照如下編輯dockerfile
docker學習-構建本地Registry
然後構建http鏡像

docker build -t httpd:v11 -f dockerfile /root/dockerfile

如下所示,構建成功
docker學習-構建本地Registry
檢查鏡像

docker images

docker學習-構建本地Registry

啓動registry容器

首先在根目錄下創建/myregistry目錄用於存放鏡像數據
本次使用鏡像是registry:2

cd /
mkdir /myregistry 

使用如下命令創建registry容器

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

docker學習-構建本地Registry
說明:
1、-d 後臺啓動容器
2、-p 將容器的5000端口映射到Host的5000端口。5000是registry服務端口
3、-v 將容器的/var/lib/regsitry目錄映射給Host的/myregistry,用於存放鏡像數據

通過docker tag重命名鏡像,使之與registry匹配,如下所示:

docker tag yangchao/httpd:v1 127.0.0.1:5000/yangchao/httpd:v1

將httpd:v11更改爲Registry要求的格式,格式如下:

只有Docker Hub上的鏡像可以省略registry-host:[port]
按照如下方式,通過docker tag重命名鏡像,使之與registry匹配

docker tag httpd:v11 127.0.0.1:5000/yangchao/httpd:v11

使用dokcer image命令檢查鏡像
docker學習-構建本地Registry

然後將yangchao/httpd:v11上傳到Registry

docker push 127.0.0.1:5000/yangchao/httpd:v11

docker學習-構建本地Registry
然後查看Registry中的鏡像

curl 127.0.0.1:5000/v2/_catalog

docker學習-構建本地Registry
可以在/myregistry目錄中查看相應的鏡像
docker學習-構建本地Registry
至此本地registry就創建完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章