Docker 私有镜像仓库的搭建及认证
原文:https://www.cnblogs.com/mrhelloworld/p/docker10.html
DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是:
- 由于网络的原因,从 DockerHub 下载和上传镜像速度可能会比较慢;
- 在生产上使用的 Docker 镜像可能包含我们的代码、配置信息等,不想被外部人员获取,只允许内网的开发人员下载。
为了解决以上问题,Docker 官方提供了一个叫做 registry
的镜像用于搭建本地私有仓库使用。在内部网络搭建的 Docker 私有仓库可以使内网人员下载、上传都非常快速,不受外网带宽等因素的影响,同时不在内网的人员也无法下载我们的镜像,并且私有仓库也支持配置仓库认证功能。接下来详细讲解 registry
私有仓库的搭建过程。
1|0拉取私有仓库镜像
拉取私有仓库镜像。
2|0修改配置
修改 daemon.json 文件。
添加以下内容,用于让 Docker 信任私有仓库地址,保存退出。
重新加载配置信息及重启 Docker 服务。
3|0创建私有仓库容器
创建私有仓库容器。
-d
:后台运行容器;--name
:为创建的容器命名;-p
:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射;-v
:将容器内/var/lib/registry
目录下的数据挂载至宿主机/mydata/docker_registry
目录下;
打开浏览器输入:http://192.168.10.10:5000/v2/_catalog 看到 {"repositories":[]}
表示私有仓库搭建成功并且内容为空。
4|0推送镜像至私有仓库
先给镜像设置标签 docker tag local-image:tagname new-repo:tagname
;
再将镜像推送至私有仓库 docker push new-repo:tagname
。
打开浏览器输入:http://192.168.10.10:5000/v2/_catalog 可以看到私有仓库中已上传的镜像。
由于我们做了目录挂载,因此可以在宿主机 /mydata/docker_registry/docker/registry/v2/repositories
目录下查看。
5|0配置私有仓库认证
私有仓库已经搭建好了,要确保私有仓库的安全性,还需要一个安全认证证书,防止发生意想不到的事情。所以需要在搭建私有仓库的 Docker 主机上先生成自签名证书。
创建证书存储目录。
生成自签名证书命令。
openssl req
:创建证书签名请求等功能;-newkey
:创建 CSR 证书签名文件和 RSA 私钥文件;rsa:2048
:指定创建的 RSA 私钥长度为 2048;-nodes
:对私钥不进行加密;-sha256
:使用 SHA256 算法;-keyout
:创建的私钥文件名称及位置;-x509
:自签发证书格式;-days
:证书有效期;-out
:指定 CSR 输出文件名称及位置;
5|1生成自签名证书
通过 openssl 先生成自签名证书,运行命令以后需要填写一些证书信息,里面最关键的部分是:Common Name (eg, your name or your server's hostname) []:192.168.10.10
,这里填写的是私有仓库的地址。
5|2生成鉴权密码文件
htpasswd 是 apache http 的基本认证文件,使用 htpasswd 命令可以生成用户及密码文件。
5|3创建私有仓库容器
5|4推送镜像至私有仓库失败
先给镜像设置标签 docker tag local-image:tagname new-repo:tagname
;
再将镜像推送至私有仓库 docker push new-repo:tagname
。
如果直接 push 镜像肯定会失败,并且出现 no basic auth credentials
的错误,这是因为我们没有进行登录认证。
5|5登录账号
通过 docker login
命令输入账号密码登录私有仓库。
5|6推送镜像至私有仓库成功
再次 push 镜像,发现已经可以推送成功了。
5|7退出账号
通过 docker logout
命令退出账号。
私有镜像仓库的搭建还可以通过 Harbor 实现,Harbor 是由 VMware 公司开源的企业级的 Docker Registry 管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。后期我也会和大家分享关于 Harbor 的使用,下文我们先来学习 Docker 网络相关的内容,解决一下容器网络通信的问题。
本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议
。
🤗 您的点赞
和转发
是对我最大的支持。
📢 扫码关注 哈喽沃德先生
「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律