当前位置:   article > 正文

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

群晖7.2 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
    
    • 1
    这将创建一个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
  • 1
  • 2

在该目录下创建一个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  # 使用本地驱动
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
步骤三:启动服务

使用以下命令启动Docker服务:

docker-compose up -d
  • 1

这将根据docker-compose.yml文件的配置启动Docker Registry和Docker Registry Browser服务。

步骤四:访问Docker Registry Browser

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

http://images.ceshi.com:6655
  • 1

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

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

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

  1. 登录到Docker Registry

    docker login images.ceshi.com:6666
    
    • 1

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

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

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

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

常见问题解决
  • 构建失败

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

    • 确保使用bcrypt加密创建新用户:
      htpasswd -B /volume1/docker/registry/auth/htpasswd newuser
      
      • 1
    • 确保htpasswd文件路径正确,并重启Docker Registry服务:
      docker-compose restart registry
      
      • 1
    • 查看用户:
    cat /volume1/docker/registry/auth/htpasswd
    
    • 1
  • 删除镜像

    • 确保在docker-compose.yml中启用了删除功能:
      environment:
        - REGISTRY_STORAGE_DELETE_ENABLED=true
      
      • 1
      • 2
    • 通过Docker Registry Browser Web UI或使用curl命令删除镜像。
      加入删除镜像功能

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1007468
推荐阅读
相关标签
  

闽ICP备14008679号