容器云----docker-registry+docker-registry-web(镜像仓库+镜像仓库管理界面)

Posted 光を追うのCaius

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器云----docker-registry+docker-registry-web(镜像仓库+镜像仓库管理界面)相关的知识,希望对你有一定的参考价值。

容器云----docker-registry+docker-registry-web(镜像仓库+镜像仓库管理界面)

 

一.配置环境

下载仓库镜像

docker pull registry:registry

docker pull hyper/docker-registry-web

配置主机名解析

vim  /etc/hosts

docker-registry  172.22.6.241

 

二.创建镜像仓库

证书认证:

创建证书存放目录

mkdir /opt/docker/data/registry_dir/certs -p

创建自签名证书

openssl req -new -newkey rsa:4096 -days 365 -subj "/CN=docker-registry" -nodes -x509 -keyout /opt/docker/data/registry_dir/certs/auth.key -out /opt/docker/data/registry_dir/certs/auth.cert

创建带有证书认证的镜像仓库

docker run -d -p 5000:5000 --restart=always --name registry-srv \\

-v /opt/docker/data/registry_dir/registry:/var/lib/registry/ \\

-v /opt/docker/data/registry_dir/certs:/certs \\

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/auth.cert \\

-e REGISTRY_HTTP_TLS_KEY=/certs/auth.key \\

registry:2.4.1

访问仓库

curl https://docker-registry:5000/v2/_catalog --insecure

尝试推送镜像到镜像仓库

docker  push  docker-registry:5000/busybox:latest

出现如下报错

unable to ping registry endpoint https:/docker-registry:5000/v0/

v2 ping attempt failed with error: Get https://mydockerhub.com:5000/v2/: x509: certificate signed by unknown authority

v1 ping attempt failed with error: Get https://mydockerhub.com:5000/v1/_ping: x509: certificate signed by unknown authority

这是因为节点还没有安装证书

节点安装证书

mkdir /etc/docker/certs.d/docker-registry:5000/ -p

cp /opt/docker/data/registry_dir/certs/auth.cert  /etc/docker/certs.d/docker-registry:5000/ca.crt

system daemon-reload

systemctl restart docker

再次尝试推送镜像

docker  push  docker-registry:5000/busybox:latest

The push refers to a repository [docker-registry:5000/busybox]
8a788232037e: Layer already exists
latest: digest: sha256:e2d9acbe92a6def141a9f9f2584468206735308df6a696430e25947882385fb2 size: 527

 

证书+密码鉴权:

创建密码文件存放目录

mkdir  /opt/docker/data/registry_dir/auth/ -p

创建密码文件

docker run --entrypoint htpasswd registry:2.4.1 -Bbn linkcm 123456 > /opt/docker/data/registry_dir/auth/htpasswd

启动带有证书+密码鉴权的仓库:

docker run -d -p 5000:5000 --restart=always --name registry-srv \\

-v /opt/docker/data/registry_dir/registry:/var/lib/registry/ \\

-v /opt/docker/data/registry_dir/certs:/certs \\

-v /opt/docker/data/registry_dir/auth:/auth \\

-e REGISTRY_AUTH=htpasswd \\

-e REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm \\

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  \\

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/auth.cert \\

-e REGISTRY_HTTP_TLS_KEY=/certs/auth.key \\

registry:2.4.1

尝试推送镜像到镜像仓库

docker  push  docker-registry:5000/busybox:latest

https://docker-registry:5000/v2/tonybai/busybox/blobs/sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4: no basic auth credentials

这是因为没有登录到docker

登录docker

docker  login  docker-registry:5000

username:test

password:

login  succeed!

再次尝试推送镜像到镜像仓库

docker  push  docker-registry:5000/busybox:latest

 

三.创建镜像仓库管理界面

此方法是建立在镜像仓库只有证书认证的模式下的,需要密码认证的方式请自动网上搜索。

docker run -d -p 8080:8080 --name registry-web --link registry-srv \\

-e REGISTRY_URL=https://registry-srv:5000/v2 \\

-e REGISTRY_TRUST_ANY_SSL=true  \\

-e REGISTRY_NAME=localhost:5000 \\

hyper/docker-registry-web

访问镜像仓库

http://172.22.6.241:8080/

 

以上是关于容器云----docker-registry+docker-registry-web(镜像仓库+镜像仓库管理界面)的主要内容,如果未能解决你的问题,请参考以下文章

docker-registry构建私有的镜像仓库

ubuntu安装Docker容器

基于Centos7安装Docker-registry2.0

围绕用户需求创新,数人云趟出中国容器云的真经

云计算 docker 容器使用命令

云原生 | Kubernetes篇深入万物基础-容器