使用COS作为Docker Registry存储

除了使用本地的文件系统作为Docker repository的存储以外,Docker Registry还可以通过Storage  Driver支持其他各种类型的存储,其中包括AWS S3以及S3兼容的对象存储。由于腾讯云对象存储COS完全兼容S3,因此在Docker Registry中配置S3 storage driver访问COS,从而将Docker image文件存放在COS,节约本地的存储空间、降低使用成本。

(参考文档:https://docs.docker.com/registry/storage-drivers/s3/

下面的步骤描述了如何配置Docker Registry的S3 storage driver以访问COS。

一、环境描述

操作系统:Ubuntu 18.04.4 LTS

Docker:19.03.6

docker-compose:1.26.2

二、配置步骤

1、在腾讯云控制台,建立存储桶example-125000000,并获取有访问该存储桶权限账号的secretid和secretkey。

2、安装Docker.io以及docker-compose软件。

3、获取Docker Registry镜像。

docker pull registry

4、新建docker-compose.yml文件,内容如下:

version: "3"
services:
  registry:
    image: registry
    container_name: docker-registry
    restart: always
    ports:
      - "5000:5000"
    environment:
       REGISTRY_STORAGE: s3
       REGISTRY_STORAGE_S3_ACCESSKEY: AKIDxxxxxxxxxxxx
       REGISTRY_STORAGE_S3_SECRETKEY: xxxxxxxxxxxxxxx
       REGISTRY_STORAGE_S3_REGION: ap-shanghai
       REGISTRY_STORAGE_S3_BUCKET: example-125000000
       REGISTRY_STORAGE_S3_REGIONENDPOINT: cos.ap-shanghai.myqcloud.com

REGISTRY_STORAGE:存储的类型,使用S3及S3兼容类型。

REGISTRY_STORAGE_S3_ACCESSKEY:访问存储桶账号的secretid。

REGISTRY_STORAGE_S3_SECRETKEY:访问存储桶账号的secretkey。

REGISTRY_STORAGE_S3_REGION:存储桶所在的地域,例如上海则填写ap-shanghai。

REGISTRY_STORAGE_S3_BUCKET:存储桶的名字。

REGISTRY_STORAGE_S3_REGIONENDPOINT:COS的endpoint,以上海的存储桶为例,填入cos.ap-shanghai.myqcloud.com。

5、编辑/etc/docker/daemon.json文件,加入以下内容,允许http方式访问registry:

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

请将上例中的IP地址替换为Docker Registry服务器的IP。

6、进入到docker-compose.yml文件所在目录,使用docker-compose运行Registry容器。

docker-compose up -d
docker ps

三、验证配置

1、Push镜像到Registry,查看配置是否生效。

docker tag busybox:latest 172.17.66.66:5000/busybox:latest
docker push 172.17.66.66:5000/busybox:latest

2、使用控制台或者cosbrower浏览example-125000000存储桶的文件,看看docker/registry/v2/repositories目录下是否有文件生成,确认镜像已经存储在COS上。

此条目发表在COS, docker分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注