【云原生-Docker篇】之 Docker Registry的搭建与使用

一、Registry私仓介绍

企业里面进行CICD的时候,需要将待发布的应用打成镜像推送到镜像仓库进行持续部署,此时肯定不方便推送到公有的镜像仓库,那么就需要自行搭建私有仓库了。

好在Docker官方有Registry私有仓库的镜像,使得我们很方便就能基于容器搭建属于自己的镜像仓库。

二、搭建过程

# 拉取最新版本的镜像
docker pull registry:latest

# 启动registry容器
docker run -d -p 5000:5000 --restart=always --name myRegistry registry:latest

# 挂载数据卷启动registry容器
# -v /mydata/docker-volume/registry/config/config.yml:/etc/docker/registry/config.yml  挂载数据卷,指定registry的配置文件,注意宿主机对应目录下要事先已经准备好了有内容的config.yml,否则会启动报错

# -v /mydata/docker-volume/registry/image:/var/lib/registry registry:latest  挂载数据卷,指定私仓镜像的存放位置
docker run -d -p 5000:5000 --restart=always --name myRegistry -v /mydata/docker-volume/registry/config/config.yml:/etc/docker/registry/config.yml -v /mydata/docker-volume/registry/image:/var/lib/registry registry:latest

下面给一个默认config.yml的配置内容:

# 自定义yml配置文件
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

三、使用仓库

原则上,所有能访问到镜像仓库所在宿主机的请求都能使用该Registry,只要在镜像名称前加上具体的服务器地址即可。

  • 上传本地镜像到私有仓库
docker tag hello-world:latest localhost:5000/hello-world:latest
docker push localhost:5000/hello-world:latest
# 执行结果如下
The push refers to repository [localhost:5000/hello-world]
e07ee1baac5f: Pushed
latest: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525

我们可以在挂载的镜像数据卷/mydata/docker-volume/registry/image中看到,此时已经有存储镜像信息了,从而验证了确实Push成功。

  • 从私有仓库下载镜像到本地
docker pull localhost:5000/hello-world:latest
#执行结果如下
latest: Pulling from hello-world
2db29710123e: Pull complete
Digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4
Status: Downloaded newer image for localhost:5000/hello-world:latest
localhost:5000/hello-world:latest

docker tag localhost:5000/hello-world:latest hello-world:latest

四、配置仓库

如上已经提供了一个默认版本的仓库配置文件,其实仓库还可以进行如下项目的配置,但是目前自己还用不到,所以先做个记录,有时间再详细研究。

  • 版本号,这个没啥好说的,目前都是:
version: 0.1
  • 日志配置
log: 
    # 级别选择debug,info,warn,error
    level: debug
    # 日志输出格式,可选text,json,logstash
    formatter: text
    # 增加到日志中的键值对,用于过滤日志
    fields:
        service: registry
        enviroment: staging
  • hooks,当仓库发生异常时通过邮件发送时的参数;

  • 存储选项,可以配置镜像存储引擎,有本地文件系统、各大服务的云存储服务等;

  • 认证选项,可选silly、token、htpassword等;

  • HTTP选项

  • 通知选项,有事件发生的时候需要通知的系统;

  • redis选项,用来缓存文件快;

  • 健康监控选项,配置对服务进行检测判断系统的状态;

  • 代理选项,配置当前registry作为一个Pull代理,从远端官方仓库拉取Docker镜像;

  • 验证选项,限定指定地址才可以Push镜像;

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
以下是搭建私服镜像中心docker-registrydocker-registry-web的步骤: 1.安装DockerDocker Compose 2.创建一个目录来存储docker-compose.yml文件和证书文件 3.创建docker-compose.yml文件并添加以下内容: ```yaml version: '3' services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_STORAGE_DELETE_ENABLED: "true" REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./data:/var/lib/registry - ./auth:/auth - ./certs:/certs registry-web: restart: always image: mkuchin/docker-registry-web:v0.1.2 ports: - 8080:8080 environment: REGISTRY_URL: https://registry:5000 REGISTRY_WEB_TITLE: Docker Registry REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./auth:/auth - ./certs:/certs ``` 4.创建一个目录来存储证书文件和htpasswd文件 5.生成证书文件 ```shell openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt ``` 6.生成htpasswd文件 ```shell htpasswd -Bc auth/htpasswd <username> ``` 7.启动docker-compose ```shell docker-compose up -d ``` 8.访问https://<your-domain>:8080,输入用户名和密码即可登录docker-registry-web界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掂掂三生有幸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值