docker搭建私有仓库

 

 1、安装运行私有register容器

1
docker run -d -v /myregistry:/var/lib/registry -p 5000:5000 --name xuRegistry registry

 参数说明:

-d 后台启动容器

-p 端口映射  将容器的5000端口映射到Host的5000端口

-v  将容器的/var/lib/registry目录映射到Host的myregistry,用于存放镜像数据

验证是否成功可以通过访问 http:// host:5000/v2

 

 

2、push镜像到仓库 

  Note:以推送hello-world到私有仓库为例

 2.1 docker images查看所有镜像

  

2.2 通过docker tag将hello-world镜像标志为要推送到私有仓库,镜像名称由repository和tag两部分组成

而repository的完整格式为:host:post/username/xxx,只有Docker Hub上的镜像可以省略:host:post

1
docker tag hello-world:latest hostip:5000/xu/hello-world:latest 

2.3  通过 docker push 命令将hello-world镜像 push到私有仓库中

1
docker push  hostip:5000/xu/hello-world:latest

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

http: server gave HTTP response to HTTPS client

解决方案:

方案一:

1
vim /usr/lib/systemd/system/docker.service 

在12行后面增加  --insecure-registry  host:5000 

修改好后重启docker 服务

1
2
3
systemctl daemon-reload
 
systemctl restart docker.service 

重启docker服务后,将容器重启

1
docker start $(docker ps -aq)

 方案二:

1
vim  /etc/docker/daemon.json<strong style="background-color: rgba(255, 255, 255, 1); font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px"> </strong>
增加内容
1
2
3
{
    "insecure-registries": ["host:5000"]
}  

修改好后重启docker 服务

1
2
3
systemctl daemon-reload
 
systemctl restart docker.service 

重启docker服务后,将容器重启

1
docker start $(docker ps -aq)
 然后重新push到私有库,应该就能成功了

 可以通过访问host:5000/v2/_catalog验证推送是否成功

  
posted @   誓鼎  阅读(277)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示