Ubuntu Docker Registry 搭建私有仓库
服务器版本 Ubuntu 16.04 LTS。
安装命令:
$ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
Registry 服务默认会将镜像保存在/var/lib/registry
目录下,上面命令设置保存目录在/opt/registry
下,我们可以看下 Registry 容器状态:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2b1ffd9072e registry "/entrypoint.sh /e..." 2 hours ago Up About an hour 0.0.0.0:5000->5000/tcp stoic_davinci
接着,我们登录另外一台服务器,将本地的已有的镜像文件推送到私有仓库中,首先,我们需要将镜像的tag
标记为要推送到私有仓库,示例:
$ docker tag hwapp:v2 40.125.207.78:5000/hwapp:v3
然后,我们看下镜像文件列表:
$ docker images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
40.125.207.78:5000/hwapp v3 fe28b19b4410 24 hours ago 1.63GB
hwapp v2 fe28b19b4410 24 hours ago 1.63GB
hwapp v1 8a28e2e870d4 25 hours ago 1.63GB
microsoft/aspnetcore latest 0f2330f1a843 26 hours ago 280MB
microsoft/dotnet latest a7dd4972fc95 6 days ago 1.63GB
最后,我们就可以将40.125.207.78:5000/hwapp:v3
镜像文件,推送到私有仓库了:
$ docker push 40.125.207.78:5000/hwapp:v3
可能会出现下面的错误:
$ docker push 40.125.207.78:5000/hwapp:v3
The push refers to a repository [40.125.207.78:5000/hwapp]
Get https://40.125.207.78:5000/v1/_ping: http: server gave HTTP response to HTTPS client
解决方式,在本服务器操作,而不是私有仓库所在服务器(如果已有daemon.json
文件,进行修改即可):
$ touch /etc/docker/daemon.json
$ echo '{ "insecure-registries": ["40.125.207.78:5000"] }' > /etc/docker/daemon.json
$ service docker restart
然后,再执行下推送命令就可以了,我们也可以直接构建成要推送私有仓库的镜像,示例:
$ docker build -t 40.125.207.78:5000/hwapp:v4 .
然后,再执行下推送命令:
$ docker push 40.125.207.78:5000/hwapp:v4
推送成功之后,我们可以检查下私有仓库里的镜像文件:
$ curl http://40.125.207.78:5000/v2/_catalog
{"repositories":["hwapp"]}
$ curl http://40.125.207.78:5000/v2/hwapp/tags/list
{"name":"hwapp","tags":["v3","v4"]}
然后,我们就可以拉取私有仓库里的镜像文件了:
$ docker pull 40.125.207.78:5000/hwapp:v4
参考资料:
作者:田园里的蟋蟀
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
2015-09-06 WCF 实体更改发布后,如何不影响调用方?
2015-09-06 ASP.NET MVC Authorization 自定义跳转