0
点赞
收藏
分享

微信扫一扫

docker的registry镜像库部署安装指引

花海书香 2022-03-11 阅读 71
docker

前置条件:准备一台服务器(79),服务器已安装docker。在79服务器创建/mnt/registry目录并挂接不少200G的磁盘空间。

注意:regisry是docker私服仓库,这里的步骤支持regisry:2.7.0版本,高于该版本的registry不支持htpasswd。(可以安装更高版本,但需要使用2.7.0版本来生成鉴权密码文件,参考服务端安装的第4步)

服务端安装:

1、执行以下命令生成您自己的证书:

mkdir -p certs

openssl req \

-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \

-x509 -days 36500 -out certs/domain.crt

生成自己的证书时,请确保在字段 Common Name 中指定一个域名。例如,本示例中该字段被指定为 dockerhub.kubekey.local。

2、拉取registry:2.7.0

docker pull registry:2.7.0

使用docker images查看是否拉取成功。

3、79服务器开放443端口

firewall-cmd --zone=public --add-port=443/udp --permanent

firewall-cmd --reload

4、创建鉴权目录和生成鉴权密码文件

mkdir -pv /mnt/registry/auth

docker run --entrypoint htpasswd registry:2.7.0 -Bbn youraccount 自定义密码 > /mnt/registry/auth/htpasswd

参数解析

-B:强制密码加密

-b:使用命令行中的密码而不是提示输入密码

-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上

youraccount是账号,可以自定义自己的账号,我这里直接就自定义为youraccount

5、执行以下命令启动 Docker的hardor仓库

docker run -d \

  --restart=always \

  --name registry \

  -v /mnt/registry/certs:/certs \

  -v /mnt/registry:/var/lib/registry \

  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \

  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \

  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \

  -v /mnt/registry/auth:/auth \

  -e "REGISTRY_AUTH=htpasswd" \

  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

  -p 443:443 \

  -v /etc/localtime:/etc/localtime:ro \

  registry:2.7.0

使用docker ps查看registry运行状态

参数说明:

-d:后台静默运行容器。

–restart:设置容器重启策略。

–name:命名容器。

-v:挂载信息

-e REGISTRY_HTTP_ADDR:设置仓库主机地址格式。

-e REGISTRY_HTTP_TLS_CERTIFICATE:设置环境变量告诉容器证书的位置。

-e REGISTRY_HTTP_TLS_KEY:设置环境变量告诉容器私钥的位置。

-p:将容器的 443 端口映射到Host主机的 443 端口

-e REGISTRY_AUTH:验证方式,固定写法

-e REGISTRY_AUTH_HTPASSWD_REALM:验证域名,固定写法

-e REGISTRY_AUTH_HTPASSWD_PATH:容器中验证文件的路径,要写文件的路径

6、在 /etc/hosts 中添加一个条目,将主机名(即仓库域名;在本示例中是 dockerhub.kubekey.local)映射到您机器的私有 IP 地址,如下所示。

vi /etc/hosts

添加以下内容

# docker registry

192.168.10.79 dockerhub.kubekey.local

使用ping dockerhub.kubekey.local测试是否配置成功

7、执行以下命令,复制证书到指定目录,并使 Docker 信任该证书。

mkdir -p  /etc/docker/certs.d/dockerhub.kubekey.local

cp /mnt/registry/certs/domain.crt  /etc/docker/certs.d/dockerhub.kubekey.local/ca.crt

注意:证书的路径“dockerhub.kubekey.local”与域名相关联。当您复制路径时,如果与上面设置的路径不同,请使用实际域名。

8、在浏览器访问https://192.168.10.79/v2,如果返回json数据则registry安装成功。

客户端测试:

前提:客户的已安装docker

1、在客户机器创建放置证书的目录和将服务端的证书拷贝到证书目录下

mkdir -p  /etc/docker/certs.d/dockerhub.kubekey.local

scp root@192.168.10.79:/mnt/registry/certs/domain.crt /etc/docker/certs.d/dockerhub.kubekey.local/ca.crt

2、编写/etc/hosts文件,增加域名解析

vi /etc/hosts

添加以下内容

# docker registry

192.168.10.79 dockerhub.kubekey.local

使用ping dockerhub.kubekey.local测试是否配置成功

3、登录registry,按提示输入账号密码,在服务端安装的第4步设置的账号密码

docker login dockerhub.kubekey.local

4、从私服镜像库下拉nginx镜像

docker pull dockerhub.kubekey.local/nginx:latest

如果提示:Error response from daemon: manifest for dockerhub.kubekey.local/nginx:latest not found。表示正常情况,只是registry私服镜像库中没有nginx镜像。

举报

相关推荐

0 条评论