DockerRegistry部署

registry是Docker官方镜像仓库,使用docker镜像部署,Dockerhub地址为register

registry 2是当前推荐的版本,以下为非安全(客户端可以使用http访问)和安全(https)部署方式的介绍,以下部署方式默认主机已安装docker并拉取了registry:2的镜像。

非安全方式

非安全方式(http方式的说法不准确),实际服务端监听的还是https,但是客户端配置后可以用http方式访问

部署方式

  1. 在宿主机创建一个专门用于存储registry仓库数据的目录,如/home/data/registry/

2. 拉取官方镜像registry:2,docker registry:2

3. 在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"]
}

systemctl daemon-reload
systemctl restart docker

重新加载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 放入其中

4.然后就可以正常访问registry作为docker私有镜像仓库了

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请发表评论。x
()
x