docker仓库——搭建registry私有仓库

一、什么是仓库

1、docker 仓库是用来包含镜像的位置,docker提供一个注册服务器(register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
2、docker运行中使用的默认仓库是 docker hub 公共仓库。
在这里插入图片描述

二、docker hub

  • docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
  • docker hub的使用:

1、 首先在https://hub.docker.com/网站注册一个账号
2、在docker hub上新建一个公共仓库
3、创建之后可以看到公共仓库,接下来要从docker主机上传镜像,首先需要登录

[root@server1 ~]# docker login
Username: username
Password: passwd

4、docker hub为了区分不同用户的同名镜像,要求镜像的格式是:[username]/xxx.tag

docker tag busybox:latest username/busybox:latest

5、上传镜像到docker hub

docker push username/busybox:latest

6、从docker hub拉取镜像

docker pull username/busybox:latest

7、删除本地镜像,再从docker hub中删除镜像

docker rmi username/busybox:latest

8、docker hub的缺点

  • 需要internet连接,速度慢
  • 所有人都可以访问
  • 由于安全原因企业不允许将镜像放到外网

三、registry工作原理

1、一次docker pull 或 push背后发生的事情
在这里插入图片描述

index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上

2、docker registry有三个角色,分别是index、registry和registry client

  • index:负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
  • registry:是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
  • registry client:docker充当registry客户端来维护推送和拉取,以及客户端的授权。

四、配置镜像加速器

  • 从docker hub上传下载镜像的速度太慢,需要配置镜像加速器,这里以阿里云为例:(需要提前注册阿里云帐号
vim /etc/docker/daemon.json

{
"registry-mirrors": ["此处添加从阿里云上获取的mirrors"]
}

systemctl daemon-reload
systemctl restart docker

五、搭建私有仓库

1、导入registry镜像

docker load -i registry2.tar

在这里插入图片描述

2、添加证书和密钥

cd ~
mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt
ls certs/
westos.org.crt  westos.org.key

在这里插入图片描述

3、将证书给docker

cd /etc/docker/
mkdir -p certs.d/reg.westos.org/
cd certs.d/reg.westos.org/
cp ~/certs/westos.org.crt ca.crt

在这里插入图片描述

3、添加用户认证功能

-B:创建用户,-c:首次创建,再次添加时会覆盖前面第一次

mkdir -p auth
yum install -y httpd-tools  ##安装认证工具
cd ~
htpasswd -Bc auth/htpasswd admin
htpasswd -B auth/htpasswd skk

在这里插入图片描述

4、建立registry容器

  • -d:后台运行
  • -v /opt/registry:/var/lib/registry:指定挂载路径
  • -p 443:443:端口映射
  • -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key:指定证书和密钥
  • -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd:指定用户认证
cd ~
docker run -d --name registry -v /opt/registry:/var/lib/registry -p 443:443 -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

在这里插入图片描述
容器建立后可以用docker ps查看容器进程是否开启,docker logs registry查看日志是否异常

查看端口:netstat -antlp
在这里插入图片描述

5、docker主机认证

做主机认证前,先进行地址解析

vim /etc/hosts

172.25.36.1 server1 reg.westos.org

经过主机认证登陆后,才可以上传和下载镜像

cd ~
docker login reg.westos.org

在这里插入图片描述/root/.docker/config.json中可以查看认证
在这里插入图片描述

6、上传镜像到仓库

  • 上传前需要对镜像打标签
docker tag nginx:latest reg.westos.org/nginx:latest
docker push reg.westos.org/nginx:latest

在这里插入图片描述

7、其他主机测试使用

  • server2主机:编写解析和获得证书
vim /etc/hosts

172.25.36.1 server1 reg.westos.org

scp -r /etc/docker/certs.d/ server2:/etc/docker/

server2登录后即可拉取镜像

docker login reg.westos.org
docker pull reg.westos.org/nginx

在这里插入图片描述

六、docker 仓库子命令

docker search查询镜像
docker pull拉取镜像
docker push上传镜像
docker login登录仓库
docker logout登出仓库
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值