搭建 Docker 私有镜像仓库(私服)可以有效地管理和分发公司内部的 Docker 镜像,提升构建和部署效率。以下是搭建私有镜像仓库的步骤:


选择私有仓库工具(我选择的是Docker Registry和Harbor

常见的 Docker 私有仓库工具包括:

  • Docker Registry:Docker 官方提供的基础镜像仓库,适用于简单的私有仓库需求。

  • Harbor:由 VMware 开发的企业级 Docker 镜像仓库,是在Docker Registry上进行了相应拓展,提供了安全、可信赖的镜像存储和管理功能,支持角色访问控制、镜像复制、镜像签名、漏洞扫描、AD/LDAP集成以及审计日志等特性。

  • Nexus Repository Manager:主要用于构建和管理 Java 组件,但也可以用作 Docker 私有仓库,具有强大的存储管理和权限控制功能。点击查看部署教程


一、Docker Registry 部署安装步骤

1.定义持久化数据卷

mkdir -p /usr/local/docker/registry/data
cd /usr/local/docker/registry
touch docker-compose.yml

2.编辑docker-compose.yml

version: '3' 
services:
  registry:
    image: registry
    restart: always
    container_name: registry
    ports:
      - '5000:5000'
    volumes:
      - /usr/local/docker/registry/data:/var/lib/registry

  #配置web查看器视图显示docker的registry私服
  frontend:
    image: konradkleine/docker-registry-frontend:v2
    restart: always
    ports:
      - '8080:80'
    environment:
      - ENV_DOCKER_REGISTRY_HOST=<你的ip>
      - ENV_DOCKER_REGISTRY_PORT=5000

3.启动容器

docker-compose down && docker-compose up -d

4.浏览器打开私服registry

  • 通过api打开:http://你的ip:5000/v2/nginx/tags/list
  • 通过frontend的web打开:http://你的ip:8080/tag/

5.配置 Docker 客户端

  为了让 Docker 客户端能够与私有仓库通信,需要在客户端配置仓库地址:

 1.编辑 Docker 配置文件:

  • 方法一:/etc/docker/daemon.json 中添加私有仓库地址:

    { "insecure-registries": ["<私有仓库地址>:5000"] }

    请将 <私有仓库地址> 替换为实际的仓库地址。

  • 方法二:修改docker启动文件 /etc/systemd/system/multi-user.target.wants/docker.service

    找到:
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    修改成:
    ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 私服IP:5000 --containerd=/run/containerd/containerd.sock
  • 重启 Docker 服务

    systemctl restart docker(service docker restart)
  • 检测一下是否配置成功

    docker info

         

2.镜像操作

  • 标记镜像
    docker tag <本地镜像>:<标签> <私有仓库地址>:5000/<镜像名>:<标签>
  • 推送镜像

    docker push <私有仓库地址>:5000/<镜像名>:<标签>
  • 拉取镜像

    docker pull <私有仓库地址>:5000/<镜像名>:<标签>

二、Harbor私服部署安装步骤

 1:Harbor组件介绍

    组件                      功能                      
harbor-adminserver         配置管理中心                  
harbor-db                  MySQL数据库                
harbor-jobservice          负责镜像复制                  
harbor-log                 记录操作日志                  
harbor-UI                  Web管理页面和API             
nginx                      前端代理, 负责前端页面和镜像的上传/下载/转发
redis                      会话                      
registry                   镜像             

2:下载 Harbor 安装包

wget https://github.com/goharbor/harbor/releases/download/v2.1.0/harbor-offline-installer-v2.1.0.tgz
mkdir -p /home/harbor/
tar xf harbor-offline-installer-v2.1.0.tgz -C /home/
cd /home/harbor/
cp harbor.yml.tmpl harbor.yml

3:配置 Harbor(目录/home/harbor/)

编辑 harbor.yml 配置文件,设置主机名、端口等信息。

修改harbor.yml,修改的内容:

hostname:改成主机ip

http.port:默认将占用80端口。 https:如果要启动https还需要配置ssl证书。

harbor_admin_password:harbor管理员密码。默认harbor_admin_password: Harbor12345。

database.password:数据库密码,默认password: root123。

data_volume:数据存放目录,默认/data。

4:安装

[root@localhost harbor]#  ./prepare
[root@localhost harbor]#  ./install.sh

5:服务管理

[root@localhost harbor]#  docker-compose up -d 启动
[root@localhost harbor]#  docker-compose stop 停止
[root@localhost harbor]#  docker-compose restart 重新启动

6:访问web页面

浏览器输入 http://IP
用户名:admin
密码(默认):Harbor12345

 7:Harbor使用

  • 创建用户

  • 创建项目

 

  • 创建仓库

  • 创建复制规则

8:配置docker客户端(和上面的Docker Registry一样,这里就不写了

9:镜像操作(和上面的Docker Registry一样,这里就不写了),下面给个执行完的界面试例

总结

提示:根据实际需求安装对应的仓库

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐