DSM7.2群晖NAS 使用YAML快速构建docker私有镜像仓库并实现基本登录认证

DSM7.2群晖NAS 使用YAML快速构建docker私有镜像仓库并实现基本登录认证

在这篇文章中,我们将介绍如何在DSM7.2群晖NAS上使用Docker构建一个私有镜像仓库,并为其添加基本认证以确保镜像的安全存储和访问。我们将使用Docker Registry和Docker Registry Browser来实现这一目标。

前提条件
  • 群晖NAS设备运行DSM 7.2
  • 群晖NAS上已安装Docker
步骤一:创建htpasswd文件

首先,我们需要创建一个htpasswd文件来存储用户的认证信息。我们将使用bcrypt加密来确保密码的安全。

  1. 通过SSH登录到您的群晖NAS,输入 sudo -i 使用root用户进行新建操作。
  2. 使用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

在浏览器中访问Docker Registry Browser的Web UI:

http://images.ceshi.com:6655

使用htpasswd文件中创建的用户名和密码登录。您将能够看到所有存储在私有Docker Registry中的镜像,并进行管理。

步骤五:推送镜像到私有Docker Registry

以下是将镜像推送到私有Docker Registry的步骤:

  1. 登录到Docker Registry

    docker login images.ceshi.com:6666
    

    系统会提示您输入用户名和密码。输入htpasswd文件中设置的用户名和密码(例如:user1)。
    输入用户密码
    实现登录访问

  2. 标记镜像
    假设您已经有一个本地镜像,例如my-image:latest,您需要将其标记为要推送到私有Docker Registry的镜像。

    docker tag my-image:latest images.ceshi.com:6666/my-image:latest
    
  3. 推送镜像
    使用docker push命令将标记的镜像推送到私有Docker Registry:

    docker push images.ceshi.com:6666/my-image:latest
    
  4. 验证推送
    您可以在Docker Registry Browser中查看镜像是否成功推送。

常见问题解决
  • 构建失败

    • 确保可以正常pull镜像,如不行可以使用第三方的镜像库或手动上传镜像到群晖中
  • 新用户无法登录

    • 确保使用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
      
    • 通过Docker Registry Browser Web UI或使用curl命令删除镜像。
      加入删除镜像功能

通过以上步骤,您可以在DSM7.2群晖NAS上构建一个安全的私有Docker镜像仓库,并轻松管理您的镜像。

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值