Docker Registry 基本配置
0x00 配置文件撰写规则
首先给出其官方文档地址:
Compose file version 3 reference
我们先来明白registry配置属性的覆盖规则,有两种:
第一种,如果你不想复写整个registry配置文件,而是想仅仅改变其中的几个属性。可以将Configuring a registry中给出的yml
文件配置属性转换为相应的环境变量,然后在docker run -e
命令中或者在docker-compose.yml
中的environment
标签下进行复写即可,基本规则为,首先对应的环境变量的名称以REGISTRY
开头,然后按照yml
文件中的层级,从上往下将名称转换为全大写,然后依次列出,中间以_
作为分隔,例如如下yml
配置的环境变量转换:
1 | storage: |
转换的环境变量即为:
1 | REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere |
第二种,复写整个registry配置文件,首先依据其官网给出的示例registry配置文件和相关规则,创建一个你自己的registry配置文件,假设其名为config.yml
,放在当前目录下,这样我们就可以通过container内外的文件映射方式来进行相关配置的复写,在docker run
命令下的示例为:
1 | docker run -d -p 5000:5000 --name registry \ |
注意其中的-v
标签,同样我们还可以在docker-compose.yml
文件中的volumes
标签下进行配置,示例如下:
1 | version: "3" |
0x01 为docker registry配置阿里云oss对象存储
我们的目的旨在实现将通过docker push
命令上传到我们私有docker registry的image全部存储到阿里云的oss对象存储服务中。首先呢,我们登陆阿里云的官网,获得一份由阿里云提供的ACCESSKEYID
和ACCESSKEYSECRET
,以及你的对象存储的bucket名称及存储地域标签,docker registry项目内置了阿里云oss的存储驱动程序,所以我们直接配置即可!在此处我使用的是环境变量配置方法,docker-compose.yml
文件中的配置如下:
1 | environment: |
给出可以参考的官方文档:
0x02 配置registry redis cache
此处的redis cache是为docker registry准备的,其官网对其作用的描述是这样的:
Registry instances may use the Redis instance for several applications. Currently, it caches information about immutable blobs.
先扯了一下淡告诉你docker registry可以利用redis来实现许多功能。(但是)目前仅用来缓存一些不变的blobs信息。OK,不管这些了,我们来配置缓存:
首先,我们在docker-compose.yml
中加入一个redis service,代码如下:
1 | redis: |
然后我们再去配置registry的环境变量:
1 | environment: |
详细的配置可参考其官方文件: