【Docker】【仓库】Registry部署
说明
registry是Docker官方镜像仓库,使用docker镜像部署,Dockerhub地址为register
registry 2是当前推荐的版本
以下为非安全(客户端可以使用http访问)和安全(https)部署方式的介绍
以下部署方式默认主机已安装docker并拉取了registry:2的镜像
非安全方式
非安全方式(http方式的说法不准确),实际服务端监听的还是https,但是客户端配置后可以用http方式访问
部署步骤
- 在宿主机创建一个专门用于存储registry仓库数据的目录,如/home/data/registry/
- 拉取官方镜像registry:2,docker registry:2
- 在registry下创建auth目录,用于存放用于registry容器的用户名密码的文件,用户名密码不是必须的,如果不设置,则部署的仓库默认为公共仓库。
mkdir -p /home/data/registry/auth
yum -y install httpd
htpasswd -Bbn root test123> /home/data/registry/auth/htpasswd
执行命令后,会在/home/data/registry/auth/htpasswd中生成密码加密的内容,如
其中root和test123即为用户名密码的明文。
4. 启动容器,到这步服务端的设置已经完成
docker run -tid --name='registry' --restart=always --privileged=true --net=host -v /home/data/registry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/var/lib/registry/auth/htpasswd registry:2
- REGISTRY_AUTH:指定鉴权方式使用htpasswd文件
- REGISTRY_AUTH_HTPASSWD_PATH:指定鉴权文件的位置
5.客户端允许http方式访问,不然访问会报错
在/etc/docker/目录下创建daemon.json文件,内容输入如下:
{
"insecure-registries":["此处添加docker宿主机的IP:5000"]
}
# 重新加载docker配置并重启后,设置就会生效
systemctl daemon-reload
systemctl restart docker
HTTP方式
https的方式,前3步都和非安全的部署方式一致,只是我们需要使用域名和创建容器时使用对应的域名证书文件。
1. 域名的使用方式有多种
如公网上部署,则一般是使用阿里云等域名服务提供商的域名服务,创建域名解析指向我们的主机,并下载对应https郑虎。
如公司内网生产环境,可以使用公司DNS进行域名注册和解析等
此处主要是验证https的方式,因此使用/etc/hosts添加本地解析,外加自建域名证书这种没成本的方式
2. 使用openssl自建域名证书,此处假设域名为registry.oude.com.并创建/home/data/registry/certs目录用于专门存放证书文件
yum -y install openssl openssl-devel
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /home/data/registry/certs/registry.oude.com.key -x509 -days 3000 -out /home/data/registry/certs/registry.oude.com.crt
3. 创建支持HTTPS访问的Registry,到此处服务端需要配置的内容完成
docker run -tid --name='registry' --restart=always --privileged=true --net=host -v /home/data/registry/certs:/certs -v /home/data/registry:/var/lib/registry -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.oude.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.oude.com.key -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/var/lib/registry/auth/htpasswd registry:2
REGISTRY_HTTP_TLS_CERTIFICATE、REGISTRY_HTTP_TLS_KEY用于指定证书文件位置
4. 客户端/etc/hosts文件添加解析
如 192.168.1.2 registry.oude.com
5. 客户端需要配置Docker支持自建域名证书
# 创建目录
/etc/docker/certs.d/registry.oude.com
# 将registry.oude.com.key 放入其中
# 然后就可以正常访问registry作为docker私有镜像仓库了
赞
赞