如何进行Docker私有镜像仓库的搭建及认证

发布时间:2021-12-10 16:45:04 作者:柒染
来源:亿速云 阅读:171

如何进行Docker私有镜像仓库的搭建及认证,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是:

为了解决以上问题,Docker 官方提供了一个叫做 registry 的镜像用于搭建本地私有仓库使用。在内部网络搭建的 Docker 私有仓库可以使内网人员下载、上传都非常快速,不受外网带宽等因素的影响,同时不在内网的人员也无法下载我们的镜像,并且私有仓库也支持配置仓库认证功能。

拉取私有仓库镜像

  拉取私有仓库镜像。

docker pull registry

修改配置

  修改 daemon.json 文件。

vi /etc/docker/daemon.json

  添加以下内容,用于让 Docker 信任私有仓库地址,保存退出。

{
    "insecure-registries": ["192.168.10.10:5000"]
}

如何进行Docker私有镜像仓库的搭建及认证

  重新加载配置信息及重启 Docker 服务。

# 重新加载某个服务的配置文件
sudo systemctl daemon-reload
# 重新启动 docker
sudo systemctl restart docker

创建私有仓库容器

  创建私有仓库容器。

docker run -di --name registry -p 5000:5000 -v /mydata/docker_registry:/var/lib/registry registry

  打开浏览器输入:http://192.168.10.10:5000/v2/_catalog 看到 {"repositories":[]} 表示私有仓库搭建成功并且内容为空。

推送镜像至私有仓库

  先给镜像设置标签 docker tag local-image:tagname new-repo:tagname

  再将镜像推送至私有仓库 docker push new-repo:tagname

docker tag hello-world:latest 192.168.10.10:5000/test-hello-world:1.0.0
docker push 192.168.10.10:5000/test-hello-world:1.0.0

如何进行Docker私有镜像仓库的搭建及认证

  打开浏览器输入:http://192.168.10.10:5000/v2/_catalog 可以看到私有仓库中已上传的镜像。

如何进行Docker私有镜像仓库的搭建及认证

  由于我们做了目录挂载,因此可以在宿主机 /mydata/docker_registry/docker/registry/v2/repositories 目录下查看。

如何进行Docker私有镜像仓库的搭建及认证

配置私有仓库认证

  私有仓库已经搭建好了,要确保私有仓库的安全性,还需要一个安全认证证书,防止发生意想不到的事情。所以需要在搭建私有仓库的 Docker 主机上先生成自签名证书。

  创建证书存储目录。

mkdir -p /usr/local/registry/certs

  生成自签名证书命令。

openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/registry/certs/domain.key -x509 -days 365 -out /usr/local/registry/certs/domain.crt

生成自签名证书

  通过 openssl 先生成自签名证书,运行命令以后需要填写一些证书信息,里面最关键的部分是:Common Name (eg, your name or your server's hostname) []:192.168.10.10,这里填写的是私有仓库的地址。

[root@localhost ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/registry/certs/domain.key -x509 -days 365 -out /usr/local/registry/certs/domain.crt
Generating a 2048 bit RSA private key
.......................+++
.........................+++
writing new private key to '/usr/local/registry/certs/domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:SH
Locality Name (eg, city) [Default City]:SH
Organization Name (eg, company) [Default Company Ltd]:mrhelloworld
Organizational Unit Name (eg, section) []:mrhelloworld
Common Name (eg, your name or your server's hostname) []:192.168.10.10
Email Address []:mrhelloworld@126.com

生成鉴权密码文件

# 创建存储鉴权密码文件目录
mkdir -p /usr/local/registry/auth
# 如果没有 htpasswd 功能需要安装 httpd
yum install -y httpd
# 创建用户和密码
htpasswd -Bbn root 1234 > /usr/local/registry/auth/htpasswd

htpasswd 是 apache http 的基本认证文件,使用 htpasswd 命令可以生成用户及密码文件。

创建私有仓库容器

docker run -di --name registry -p 5000:5000 \
   -v /mydata/docker_registry:/var/lib/registry \
   -v /usr/local/registry/certs:/certs \
   -v /usr/local/registry/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/domain.crt \
   -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
   registry

推送镜像至私有仓库失败

  先给镜像设置标签 docker tag local-image:tagname new-repo:tagname

  再将镜像推送至私有仓库 docker push new-repo:tagname

docker tag hello-world:latest 192.168.10.10:5000/test-hello-world:1.0.0
docker push 192.168.10.10:5000/test-hello-world:1.0.0

  如果直接 push 镜像肯定会失败,并且出现 no basic auth credentials 的错误,这是因为我们没有进行登录认证。

如何进行Docker私有镜像仓库的搭建及认证

登录账号

  通过 docker login 命令输入账号密码登录私有仓库。

如何进行Docker私有镜像仓库的搭建及认证

推送镜像至私有仓库成功

  再次 push 镜像,发现已经可以推送成功了。

如何进行Docker私有镜像仓库的搭建及认证

退出账号

  通过 docker logout 命令退出账号。

[root@localhost ~]# docker logout 192.168.10.10
Removing login credentials for 192.168.10.10

私有镜像仓库的搭建还可以通过 Harbor 实现,Harbor 是由 VMware 公司开源的企业级的 Docker Registry 管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. docker私有仓库搭建
  2. 用registry搭建私有镜像仓库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker

上一篇:如何进行Docker Swarm集群搭建

下一篇:Redis数据库入门知识点有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》