# docker搭建私有仓库

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/20846.html | 发布：2023-05-29 | 更新：2023-05-29 | 分类：建站教程

1、下载运行register容器  
$ docker run -d -v /Users/miuye/Public/registry:/var/lib/registry -p 5000:5000 --name myRegistry registry  
1  
/Users/miuye/Public/registry是我个人的挂载的本地目录，push到该仓库的镜像会保存在该路径下。

 

安装完成后，可以通过访问http://127.0.0.1:5000/v2进行验证，看到如下图片就说明成功了。

 

2、push镜像到仓库  
2.1 通过docker images可以查看目前有的镜像

 

以httpd作为实验对象推送到私有仓库中。

 

2.2 通过docker tag将该镜像标志为要推送到私有仓库  
$ docker tag httpd:1.0 localhost:5000/httpd:1.0  
1

  

2.3 通过 docker push 命令将 httpd 镜像 push到私有仓库中  
$ docker push localhost:5000/httpd:1.0  
1  
【可以通过修改/etc/hosts文件使用域名进行访问】

 

推送完后可以通过访问http://127.0.0.1:5000/v2/_catalog进行验证

 

3、通过 docker pull 命令从仓库pull镜像  
$ docker pull 192.168.1.66:5000/httpd:1.0  
1  
报错：http: server gave HTTP response to HTTPS client

 

原因：Docker自从1.3.X之后docker registry交互默认使用的是HTTPS，但是搭建私有镜像默认使用的是HTTP服务，所以与私有镜像交时出现以上错误。

 

解决办法：

 

vi /usr/lib/systemd/system/docker.service  
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面加参数–insecure-registry 192.168.1.66:5000

 

【注意：192.168.1.66是我私有仓库所在主机的ip，需要改成自己的仓库ip或者域名】

 

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.1.66:5000  
1

 

修改好后重启docker 服务

 

systemctl daemon-reload   
systemctl restart docker  
1  
2  
vi /etc/docker/daemon.json 没有的话自己新建一个  
加入以下内容：（注意ip改成自己的）

 

{ "insecure-registries":["192.168.1.66:5000"] }  
1  
修改好后重启docker 服务

 

systemctl daemon-reload   
systemctl restart docker  
1  
2  
重新pull

 

$ docker pull 192.168.1.66:5000/httpd:1.0  
1  
成功

 

4、体验小优化  
4.1 在push端添加host后通过域名进行push

  

2、pull端添加hosts后通过域名进行pull

 

docker.service和daemon.json也修改为对应域名

 

这样push和pull的时候如果仓库ip发生了变化，只需要修改hosts即可。

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
