除了使用本地的文件系统作为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上。