一.軟件環境
宿主機操作系統:CentOS Linux release 7.5
虛擬機工具:VMware® Workstation 10
應用容器引擎:Docker version 19.03.7
二.任務背景
所謂私有倉庫,也就是在本地(局域網)搭建的一個類似公共倉庫的東西,搭建好之後,我們可以將鏡像提交到私有倉庫中。這樣我們既能使用 Docker 來運行我們的項目鏡像,也避免從公共倉庫中來取來拿所暴露出去的風險;利用Docker Registry快速搭建私有鏡像倉庫。
三.操作步驟
倉庫地址:192.168.153.141
#下載registry鏡像
[root@docker docker]# docker pull registry
#創建registry容器並啓動
[root@docker docker]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000
--restart=always --name registry registry
b697d68647a95e01ee09115c3b9c035a393cac7e51f96e2e58c1896b500e8cfb
[root@docker docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b697d68647a9 registry "/entrypoint.sh /etc…" 40 seconds ago Up 19 seconds 0.0.0.0:5000->5000/tcp registry
客戶端:192.168.153.142
#測試,查看鏡像倉庫中所有鏡像
[root@redis_master docker]# curl http://192.168.153.141:5000/v2/_catalog
{"repositories":[]}
#私有鏡像倉庫管理
#配置私有倉庫:
# vi /etc/docker/dameon.jsp
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"],
"insecure-registries":["192.168.153.141:5000"]
}
~
# systemctl restart docker
#下載鏡像
# docker pull nginx:1.12
#打標籤
# docker tag nginx:1.12 192.168.153.142:5000/centos:7
# docker tag nginx:1.12 192.168.153.141:5000/nginx:1.12
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.153.141:5000/nginx 1.12 4037a5562b03 22 months ago 108 MB
192.168.153.142:5000/centos 7 4037a5562b03 22 months ago 108 MB
docker.io/nginx 1.12 4037a5562b03 22 months ago 108 MB
#上傳鏡像到倉庫
# docker push 192.168.153.141:5000/nginx:1.12
The push refers to a repository [192.168.153.141:5000/nginx]
4258832b2570: Pushed
683a28d1d7fd: Pushed
d626a8ad97a1: Pushed
1.12: digest: sha256:09e210fe1e7f54647344d278a8d0dee8a4f59f275b72280e8b5a7c18c560057f size: 948
# docker tag nginx:1.12 192.168.153.141:5000/centos:7
#查看倉庫鏡像
[root@redis_master /]# curl http://192.168.153.141:5000/v2/_catalog
{"repositories":["centos","nginx"]}
#列出鏡像標籤
[root@redis_master /]# curl http://192.168.153.141:5000/v2/nginx/tags/list
{"name":"nginx","tags":["1.12"]}
# curl http://192.168.153.141:5000/v2/centos/tags/list
{"name":"centos","tags":["7"]}
#從本地倉庫(192.168.153.141:5000)下載鏡像
#並創建nginx容器
[root@redis_master /]# docker run -itd --name nginx -p 88:80 192.168.153.141:5000/nginx:1.12
0c75bba5a04eb075d432f4409923007a4f8c29b4fb987475d37cae4eeccb303b
#查看正在運行的容器
[root@redis_master /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c75bba5a04e 192.168.153.141:5000/nginx:1.12 "nginx -g 'daemon ..." 40 seconds ago Up 38 seconds 0.0.0.0:88->80/tcp nginx