【Docker】私有Docker仓库的搭建

一、准备工作

确保您的系统已安装Docker。如果没有安装,请参考Docker官方文档进行安装。

准备一个用于存储仓库数据的目录,例如/registry_data/。

二、拉取官方registry镜像

首先,我们需要从Docker Hub拉取官方的registry镜像。执行以下命令:

sh 复制代码
docker pull registry

三、启动私有Docker仓库

接下来,我们使用以下命令启动私有仓库:

sh 复制代码
docker run -d -p 5000:5000 -v /registry_data/:/var/lib/registry --privileged=true registry

该命令的含义如下:
-d:后台运行容器。
-p 5000:5000:将容器的5000端口映射到宿主机的5000端口。
-v /registry_data/:/var/lib/registry:将宿主机的/registry_data/目录挂载到容器的/var/lib/registry目录,用于存储仓库数据。
--privileged=true:赋予容器扩展权限。

四、配置用户认证

为了确保私有仓库的安全性,我们可以为仓库设置密码认证。如果需要,以下是如何生成密码文件并配置用户认证的步骤:

生成密码文件

首先,使用htpasswd命令生成密码文件htpasswd:

sh 复制代码
htpasswd -Bc htpasswd <username>

输入密码后,用户信息将被存储到htpasswd文件中。

添加更多用户

如果需要添加更多用户,可以使用以下命令:

sh 复制代码
htpasswd -B htpasswd <username2>
启动带用户认证的私有仓库

运行以下命令:

sh 复制代码
docker run -d \
  -p 5000:5000 \
  -v /registry_data/:/var/lib/registry \
  -v /htpasswd:/auth/htpasswd \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  --privileged=true \
  registry

-e "REGISTRY_AUTH=htpasswd":

-REGISTRY_AUTH 环境变量用于指定容器应该使用哪种认证方式。在这个例子中,htpasswd 表示将使用基本认证(HTTP基本认证),这是通过 .htpasswd 文件实现的,该文件包含用户名和加密后的密码。

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm":
REGISTRY_AUTH_HTPASSWD_REALM 环境变量定义了认证时的 Realm,这通常显示在认证对话框中,告知用户他们正在登录哪个服务。在这个例子中,Realm 被设置为 "Registry Realm"。

-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd":
REGISTRY_AUTH_HTPASSWD_PATH 环境变量指定了 .htpasswd 文件的路径,该文件包含用户认证信息。在这个例子中,.htpasswd 文件被挂载到容器内的 /auth/htpasswd 路径。

五、配置Docker守护进程

为了让Docker客户端能够访问私有仓库,我们需要将仓库地址添加到Docker的daemon.json文件中。执行以下命令:

json 复制代码
{
  "insecure-registries": [
    "<your-repo-domain>:<your-repo-port>"
  ]
}

其中,和分别替换为您的私有仓库域名和端口。

修改完成后,重载Docker:

sh 复制代码
systemctl reload docker

至此,私有Docker仓库搭建完成,您可以使用以下命令进行登录和推送镜像:

最后,我们使用以下命令启动带用户认证的私有仓库:

sh 复制代码
docker login <your-repo-domain>:<your-repo-port>
docker tag <image-name> <your-repo-domain>:<your-repo-port>/<image-name>
docker push <your-repo-domain>:<your-repo-port>/<image-name>

以上就是搭建私有Docker仓库的详细步骤,希望对您有所帮助!

相关推荐
阿标在干嘛1 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT19954 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
wzg20164 小时前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)4 小时前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
方便面不加香菜6 小时前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器
Star(up up up)6 小时前
Docker系列---Dockerfile镜像文件
人工智能·经验分享·学习·程序人生·docker·容器·github
-星空下无敌6 小时前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
芥子沫6 小时前
从零开始用 Docker 部署 Hoppscotch:自建 API 调试平台的完整教程
docker·接口测试·api开发·api管理
yujunlong39196 小时前
[特殊字符] Serverpod 4.1.0 全栈项目开发与 Docker 部署规范文档
flutter·docker·serverpod
code_slave(码畜)8 小时前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构