赞
踩
在这篇文章中,我们将介绍如何在DSM7.2群晖NAS上使用Docker构建一个私有镜像仓库,并为其添加基本认证以确保镜像的安全存储和访问。我们将使用Docker Registry和Docker Registry Browser来实现这一目标。
htpasswd
文件首先,我们需要创建一个htpasswd
文件来存储用户的认证信息。我们将使用bcrypt
加密来确保密码的安全。
sudo -i
使用root用户进行新建操作。htpasswd
工具创建用户:htpasswd -B -c /volume1/docker/registry/auth/htpasswd user1
htpasswd
文件并添加用户user1
。系统会提示您输入并确认密码。docker-compose.yml
文件(以下操作方法2选1即可)
方法1:
使用文件管理在根目录下新建docker文件夹,再新建一个registry文件夹,目录路径为/volume1/docker/registry,剩下的按图操作,填入方法2中的yaml代码。
点击完成即可启动yaml项目,浏览器登录http://images.ceshi.com:6655,输入步骤一新建的用户密码。
方法2:
接下来,我们将编写一个docker-compose.yml
文件,以便使用Docker Compose启动我们的Docker Registry和Docker Registry Browser服务。
在群晖NAS上创建一个目录来存放我们的Docker配置文件:
mkdir -p /volume1/docker/registry
cd /volume1/docker/registry
在该目录下创建一个docker-compose.yml
文件,并添加以下内容:
version: '3.8' # 使用bcrypt加密创建用户:htpasswd -B /volume1/docker/registry/auth/htpasswd user1 # 删除用户: htpasswd -D /volume1/docker/registry/auth/htpasswd user1 services: # Docker Registry 服务配置 registry: image: registry:2.8.3 container_name: registry ports: - "6666:5000" # 映射主机的 6666 端口到容器的 5000 端口 environment: - REGISTRY_HTTP_ADDR=0.0.0.0:5000 # 配置 Registry 服务监听地址 - REGISTRY_AUTH=htpasswd # 启用 htpasswd 认证 - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # htpasswd 文件路径 - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm # 认证领域 volumes: - /volume1/docker/registry:/var/lib/registry # 挂载宿主机目录用于存储镜像 - /volume1/docker/registry/auth:/auth # 挂载 htpasswd 文件目录 restart: always # 自动重启策略 # Docker Registry Browser 服务配置 registry-browser: image: klausmeyer/docker-registry-browser:latest container_name: registry-browser ports: - "6655:8080" # 映射主机的 6655 端口到容器的 8080 端口 environment: - DOCKER_REGISTRY_URL=http://images.ceshi.com:6666 # Docker Registry 地址 - ENV_DOCKER_REGISTRY_USE_SSL=false # 是否使用 SSL - ENV_DOCKER_REGISTRY_USE_BASIC_AUTH=true # 启用基本认证 - ENABLE_DELETE_IMAGES=true # 启用删除镜像功能 - SECRET_KEY_BASE=e2fc714c4727ee9395f324cd2e7f331fbb473b54641b2042ff5612f05b983238 # 安全密钥 volumes: - /volume1/docker/registry/auth:/auth # 挂载 htpasswd 文件目录 depends_on: - registry # 依赖于 registry 服务 restart: always # 自动重启策略 # 定义数据卷 volumes: registry-data: driver: local # 使用本地驱动
使用以下命令启动Docker服务:
docker-compose up -d
这将根据docker-compose.yml
文件的配置启动Docker Registry和Docker Registry Browser服务。
在浏览器中访问Docker Registry Browser的Web UI:
http://images.ceshi.com:6655
使用htpasswd
文件中创建的用户名和密码登录。您将能够看到所有存储在私有Docker Registry中的镜像,并进行管理。
以下是将镜像推送到私有Docker Registry的步骤:
登录到Docker Registry
docker login images.ceshi.com:6666
系统会提示您输入用户名和密码。输入htpasswd
文件中设置的用户名和密码(例如:user1
)。
标记镜像
假设您已经有一个本地镜像,例如my-image:latest
,您需要将其标记为要推送到私有Docker Registry的镜像。
docker tag my-image:latest images.ceshi.com:6666/my-image:latest
推送镜像
使用docker push
命令将标记的镜像推送到私有Docker Registry:
docker push images.ceshi.com:6666/my-image:latest
验证推送
您可以在Docker Registry Browser中查看镜像是否成功推送。
构建失败
新用户无法登录
bcrypt
加密创建新用户:htpasswd -B /volume1/docker/registry/auth/htpasswd newuser
htpasswd
文件路径正确,并重启Docker Registry服务:docker-compose restart registry
cat /volume1/docker/registry/auth/htpasswd
删除镜像
docker-compose.yml
中启用了删除功能:environment:
- REGISTRY_STORAGE_DELETE_ENABLED=true
curl
命令删除镜像。通过以上步骤,您可以在DSM7.2群晖NAS上构建一个安全的私有Docker镜像仓库,并轻松管理您的镜像。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。