1. 概述

  • 通过部署Docker Registry,可实现自建Docker私有仓库。
  • 自建Docker私有仓库,主要是方便内部分发或部署项目。如果只有一个服务器,可以直接build镜像,且不建私有仓库。
  • 各大厂商有提供免费的私有仓库服务,可以不用自建。

官方相关文档:

2. 部署

  • 假设在IP为192.168.0.1的服务器上部署。
  • Docker Registry采用端口5000docker-registry-ui采用端口80
  • 建议使用Docker Compose方式进行部署。
  • 为了方便管理(主要是执行“删除”操作),同时部署了可视化操作的Web界面。
  • 由于是内部部署,Docker Registry没有配置用户管理(包括用户的身份验证、权限管理之类)。
  • Registry的所有配置项,均可通过环境变量设置。相关的完整配置项说明,详见:Configuring a registry

部署Registry的docker-compose.yaml文件,参考如下:

version: '3.8'

services:
  registry-server:
    image: registry:latest
    #container_name: registry-server
    restart: always
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED: true
  volumes:
    - ./registry:/var/lib/registry

  registry-ui:
    image: joxit/docker-registry-ui:latest
    #container_name: registry-ui
    restart: always
    ports:
      - 80:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=Docker Registry UI
      - DELETE_IMAGES=true 
      - SHOW_CONTENT_DIGEST=true 
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=false
      - CATALOG_ELEMENTS_LIMIT=1000

3. 上传镜像

给镜像设置名称和tag,然后执行docker push上传。其中镜像名称需要以Registry地址(IP或域名)+端口作为前缀。

示例命令如下:

# 给镜像设置tag
docker tag <镜像名称>:<tag> 192.168.0.1:5000/<镜像名称>:<tag>

# 上传镜像
docker push 192.168.0.1:5000/<镜像名称>:<tag>

4. 下载镜像

4.1. 修改Docke配置文件。

一般Linux上,Docker服务的配置文件在/etc/docker/daemon.jsoninsecure-registries添加Docker Registry服务,例如:

{
    "insecure-registries":["192.168.0.1:5000"]
}

修改后需要使用配置生效。可重启本机Docker服务,或执行热更新操作。例如:

# 重启本机Docker服务
sudo systemctl restart docker

# Docker配置文件热更新
sudo kill -SIGHUP $(pidof dockerd)

4.2. 从自建私有仓库下载镜像

docker pull 192.168.0.10:5000/<镜像名称>:<tag>

5. 仓库管理

一般通过docker-registry-ui(即http://192.168.0.1/),对私有仓库的镜像进行查看、删除。

Docker Registry本身提供了接口,用于管理其存储的镜像。

标签: Docker, registry

添加新评论