1. Registry介紹
官方的Docker hub是一個用於管理公共鏡像的好地方,我們可以在上面找到我們想要的鏡像,也可以把我們自己的鏡像推送上去。但是,Docker hub私有鏡像個數限制,同時國內訪問速度受限制。
官方在Docker hub上提供了registry的鏡像,我們可以直接使用該registry鏡像來構建一個容器,搭建我們自己的私有倉庫服務。
2. Registry的部署
- 編寫docker-compse 腳本compose-registry.yml :
registry:
container_name: registry
image: registry:latest
port:
- 5000:5000
volumes:
- /opt/registry:/var/lib/registry
restart: always
- 運行如下命令:
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker-compose -f compose-registry up -d registry
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10cf04d93d95 registry:latest "/entrypoint.sh /etc…" 6 minutes ago Up 6 minutes 0.0.0.0:5000->5000/tcp registry
- registry容器啓動後,打開瀏覽器輸入http://ip_add:5000/v2/,看到下面情況說明registry運行正常
訪問:
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# curl -XGET http://ip_add:5000
{}[root@iZm5ee3t4tj14j1vdg6oozZ ~]#
- 測試上傳鏡像到Registry
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker tag hello-world:latest ip_add:5000/hello-world:1.0
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest f32a97de94e1 8 months ago 25.8MB
ip_add:5000/hello-world 1.0 fce289e99eb9 10 months ago 1.84kB
hello-world latest fce289e99eb9 10 months ago 1.84kB
registry 2.5.0 c6c14b3960bd 3 years ago 33.3MB
- 上傳j鏡像到Registry私有倉庫
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker push 115.28.137.160:5000/hello-world:1.0
The push refers to repository [ip_add:5000/hello-world]
af0b15c8625b: Layer already exists
1.0: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
注意:
可能會出現無法push鏡像到私有倉庫的問題。提示:
這是因爲我們啓動的registry服務不是安全可信賴的。這時需要修改客戶端docker的配置文件/etc/docker/daemon.json,添加下面藍色的內容(registry服務地址):
{
“insecure-registries”: [“x.x.x.x:5000”]
}
修改好之後需要重啓Docker服務才能生效,執行命令:systemctl restart docker ,再push即可
push成功之後,查看本地/opt/registry目錄下已經有了剛推送上來的registry鏡像,也可以在瀏覽器中輸入http://ip_add:5000/v2/_catalog
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# curl -XGET http://ip_add:5000/v2/_catalog
{"repositories":["hello-world"]}