搭建本地私有仓库 registry

网友投稿 306 2022-10-17

搭建本地私有仓库 registry

前言:为什么要搭建私有仓库呢?因为docker hub仓库是国外,拉取国外镜像速度比较慢,从自己搭建的私有仓库拉取镜像速度会比较快,把之前下载下来的镜像上传到私有仓库,然后部署项目的时候再从私有仓库拉下来。这样拉取的镜像速度会很快,而且有时候自己制作的的镜像也可以上传到私有仓库,然后需要的时候再从仓库拉取下来,这样会大大的提高工作效率。​

1.创建相关目录

mkdir -p /home/repository/config & mkdir -p /home/repository/auth

2.自定义配置config.yml文件

vim /home/repository/config/config.ymlversion: 0.1log: fields: service: registrystorage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registryaddr: :5000 headers: X-Content-Type-Options: [nosniff]health: storagedriver: enabled: true interval: 10sthreshold: 3

3.运行容器

docker run -d -p 5001:5000 --restart=always --name=repository -v /home/repository/config/:/etc/docker/registry/ -v /home/repository/auth/:/auth/ -v /home/repository/:/var/lib/registry/ registry:2

4.下载镜像测试

[root@manager1 config]# docker pull hello-world

5.给镜像打tag

[root@manager1 config]# docker tag hello-world 192.168.21.101:5001/hello-world

6.查看镜像

[root@manager1 config]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE127.0.0.1:5000/hello-world latest feb5d9fea6a5 10 months ago 13.3kB192.168.21.101:5001/hello-world latest feb5d9fea6a5 10 months ago 13.3kBhello-world latest feb5d9fea6a5 10 months ago 13.3kB

7.修改daemon.json文件

[root@manager1 config]# vim /etc/docker/daemon.json{"insecure-registries":["192.168.21.101:5001"], #这里是镜像仓库的ip地址和端口 "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"3"}}

修改后重新加载配置重启​

systemctl daemon-reload systemctl restart docker

8.测试一下镜像

登录镜像仓库​

docker login 192.168.21.101:5001​

然后会要求提示用户名和密码,用户名和密码随便填,因为我这里还没有给他设置账户名和密码。不过反正随便填一个账号名和密码就可以登录成功后面自己添加一个真实是的账号和密码,然后成功上传镜像。​

[root@manager1 opt]# docker push 192.168.21.101:5001/hello-world The push refers to repository [192.168.21.101:5001/hello-world]e07ee1baac5f: Pushed latest: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525[root@manager1 opt]#

访问一下,查看所有镜像的名称​

192.168.21.101:5001/v2/_catalog​

列出某一个镜像有多少个版本​

192.168.21.101:5001/v2/busybox/tags/list​

9.给docker镜像仓库设置账号和密码

使用htpasswd命令 (htpasswd命令识别不了 需要安装 yum install -y)​

htpasswd -Bbn kiki 12345678 >/home/repository/auth/htpasswd ​

把上面搭建运行镜像仓库容器停掉,删除​

docker stop repository​

docker rm repository​

重新执行下面语句run​

docker run -d -p 5001:5000 --restart=always --name=repository -v /home/repository/config/:/etc/docker/registry/ -v /home/repository/auth/:/auth/ -v /home/repository/:/var/lib/registry/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

浏览器访问的时候需要提供账户名和密码才能访问​

输入上面创建的用户名和密码访问​

登入私有仓库输入正确的用户名和密码​

docker pull 192.168.21.101:5001/hello-world #把镜像拉取下来​

docker logout 192.168.21.101:5001 #退出私有镜像仓库​

10.搭建registry_web,UI界面

docker search docker-registry-webdocker pull hyper/docker-registry-web#拉取Registry web镜像

因为仓库有设置密码,所以链接搭建web需要认证信息。​

docker login 192.168.21.101:5001​

然后cat /root/.docker/config.json 就可以看到认证信息。所以先准备这个认证的密码信息。​

docker run -d --name registry-web2 --restart=always -p 8081:8080 --link repository -e REGISTRY_URL=-e REGISTRY_NAME=192.168.21.101:5001 -e REGISTRY_READONLY=true -e REGISTRY_BASIC_AUTH="ZXI6ZXI=" hyper/docker-registry-web

备注:​

-d #后台允许​

--restart=always #重新启动​

​​192.168.21.101:5001/v2​​是私有仓库的地址信息​

在web界面,true表示不能删除镜像,false能删除镜像。​

REGISTRY_BASIC_AUTH="ZXI6ZXI= #web界面基本身份认证​

11.使用浏览器访问web界面

图1​

图2

说明事项:

出现下面错误,是因为-e REGISTRY_BASIC_AUTH 写的web认证密码有误,删除/root/.docker/config.json 这个文件,重新登录私有仓库再查看(/root/.docker/config.json),复制那个认证密码替换。​

这篇文章还是有点缺陷,不足的是registry_web界面没有账号密码认证,这样会不安全,即使我已经把删除镜像的权限默认去掉。但是项目里面有什么镜像都可以看到​

有个方法nginx 代理这个web界面可以实现 账号密码认证。如下图。​

但是还是不足,因为他registry_web本身就没有账号和密码认证,我研究一下再分享给大家。​

配置文件图↑​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:读书笔记-第一本Docker书:Docker入门
下一篇:springboot中如何判断某个bean是否存在
相关文章

 发表评论

暂时没有评论,来抢沙发吧~