侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

基于Docker搭建Registry私有镜像仓库

2023-12-07 星期四 / 0 评论 / 0 点赞 / 108 阅读 / 3972 字

镜像库默认保存在容器下 /var/lib/registry 路径,并volumn到宿主机将 Registry 服务开放到 Localhost 以外的域要求TLS加密Registry 默认监听 5000

  • 镜像库默认保存在容器下 /var/lib/registry 路径,并volumn到宿主机
  • Registry 服务开放到 Localhost 以外的域要求TLS加密
  • Registry 默认监听 5000 端口

基于Docker两种模式搭建 Registry

  • 这里约定HTTPS证书和秘钥在/etc/certs目录
  • 文件重命名为 domain.crt domain.key

1. 单服务模式启动

docker run -d --name registry --hostname registry.example.com /-e "REGISTRY_STORAGE_DELETE_ENABLED=true" /-e "REGISTRY_AUTH: htpasswd" /-e "REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd" /-e "REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm" /-e "REGISTRY_HTTP_TLS_KEY: /etc/certs/domain.key" /-e "REGISTRY_HTTP_TLS_CERTIFICATE: /etc/certs/domain.crt" /-p 5000:5000 /-v /etc/certs:/etc/certs /-v /srv/registry/auth:/auth /-v /srv/registry/storage:/var/lib/registry /--restart=always registry:2

2. Compose服务编排模式(推荐方式)

docker pull registry:2####################### 多行命令开始 ###############################cat >> docker-compose.yaml <<EOFversion: '2'services:  Registry:    image: 'registry:2'    container_name: 'registry'    hostname: 'registry.example.com'        restart: always    ports:      - '5000:5000'    environment:      REGISTRY_STORAGE_DELETE_ENABLED: 'true'      REGISTRY_AUTH: htpasswd      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm      REGISTRY_HTTP_TLS_KEY: /etc/certs/domain.key      REGISTRY_HTTP_TLS_CERTIFICATE: /etc/certs/domain.crt    volumes:      - /etc/certs:/etc/certs      - /srv/registry/auth:/auth      - /srv/registry/storage:/var/lib/registryEOF####################### 多行命令结束 ###############################docker-compose up -d

TLS加密可采用自签名证书

sudo mkdir /etc/certscd /etc/certs# 如果签发对象还是个IP而不是域名的话# 自签名证书需要有个备选的IP SANS校验信息sudo sed -i '//[ v3_ca /]/a/subjectAltName = IP:121.40.145.76' /etc/pki/tls/openssl.cnf  # CentOS7环境下sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt  # 其中Common Name输入 registry.example.comsudo openssl dhparam -out dhparam.pem 1024  # 生成DHE参数文件增强ssl加密

Registry的自签名证书需要手动导入到客户端Docker Daemon的根证书信任列表:

  • domain.crt 拷贝至 客户端Docker Daemon 的 /etc/docker/certs.d/registry.example.com:5000/ca.crt
  • 部分RedHat系列客户端还需要在系统层面信任:
    1. domain.crt 拷贝至 客户端Docker Daemon 的 /etc/pki/ca-trust/source/anchors/registry.example.com.crt
    2. update-ca-trust enable && update-ca-trust

不做TLS加密,使用普通http通信(不推荐)

  • 此时 Registry 不支持 basic authentication
  • Registry 访问无法开放到 localhost 以外的域
    配置:Docker Damon 配置启动选项 DOCKER_OPTS="--insecure-registry registry.example.com:5000"

Registry操作

## 镜像指向私有registry两种方式  ##docker tag 本地镜像 registry_url[:port]/namespace/imagename[:tag]  # tag一个本地镜像到registry方式docker build -t registry_url[:port]/namespace/imagename[:tag] .  # 直接build镜像到registry方式docker push registry_url[:port]/namespace/imagename[:tag]  # 推送镜像到仓库docker pull registry_url[:port]/namespace/imagename[:tag]  # 拉取镜像

广告 广告

评论区