docker私有仓库搭建一、搜索镜像
docker search registry
二、拉取并启动镜像
[root@localhost ~]# docker run -d \ #后台运行该容器 > -p 5000:5000 \ #将容器内部5000的端口暴露给宿主机的5000端口上 > --restart=always \ #docker启动后，该镜像仓库容器自动启动 > --name registry \ #该容器名称为registry > -v /mnt/registry:/var/lib/registry \ #将宿主机的/mnt/registry的目录，通过数据卷的方式，挂载到容器内部的/var/lib/registry > registry:2 #镜像名称：版本号
说明：
docker的registry有两个版本：v1和v2；
v1的容器内部默认镜像位置为/tmp/registry
v2的容器内部默认镜像位置为/var/lib/registry
三、允许http方式推送
vim /etc/docker/daemon.json
添加
"insecure-registries": ["192.168.59.111:5000"]
键值对
这里的ip根据自己实际ip调整
重启docker
[root@localhost mnt]# systemctl daemon-reload [root@localhost mnt]# systemctl restart docker [root@localhost mnt]# systemctl restart docker.service
四、推送镜像到私有仓库
1，给镜像打标签
docker tag wayne-nginx:latest 192.168.199.103:5000/wayne-nginx:20221016v1
2，推送镜像
docker push 192.168.199.103:5000/wayne-nginx:20221016v1
推送结果
3，验证推送
浏览器中输入http://192.168.199.103:5000/v2/wayne-nginx/tags/list
出现如下提示：
或者进入刚刚挂在的仓库对应的宿主机目录中，出现如下提示也表示推送成功
五、配置需要认证的私有仓库
1，创建目录并生成证书
执行如下命令生成证书：
openssl req -x509 -days 3650 -subj '/CN=192.168.199.103:5000/' -nodes -newkey rsa:2048 -keyout domain.key -out domian.crt
2，生成用户名和密码
1，在registry目录下创建auth文件夹
2.安装httpd-tools工具包
yum install httpd-tools -y
3，执行如下命令生成用户名和密码
htpasswd -Bbn wayne 123456 > auth/htpasswd
4，创建包含认证的registry容器服务
执行命令：
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry -v /root/docker/registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /root/docker/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domian.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2
相关参数解释
5，添加供其他dockers机器访问的接口
执行如下命令
[root@localhost registry]# mkdir -p /etc/docker/certs.d/192.169.199.103:5000 [root@localhost registry]# cp certs/domian.crt /etc/docker/certs.d/192.169.199.103\:5000/
6，重启docker服务
[root@localhost registry]# systemctl reload docker [root@localhost registry]# systemctl restart docker
7，验证