docker仓库的使用

什么是仓库

Docker 仓库是用来包含镜像的位置,Docker提供一个注册服
务器(Register)来保存多个仓库,每个仓库又可以包含多个
具备不同tag的镜像。

阿里云镜像仓库的使用

1.获取加速器地址
使用阿里运镜像仓库时需要先注册一个帐号。登陆后进行操作。
在这里插入图片描述
搜索容器镜像服务。
在这里插入图片描述
进入页面后点击管理控制台。
在这里插入图片描述
这里可以得到一个镜像加速器的地址,在使用仓库时有这个加速器地址可以将速度大幅度提升。
2.使用加速器
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

[root@server1 docker]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://hily55dy.mirror.aliyuncs.com"]
}

加速器地址。

[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]#  systemctl restart docker

重启服务,之后就可以使用阿里云的在线仓库了。

3.使用在线仓库
使用在线仓库时当然得保证主机可以联网啦,下面我们使用在线仓库对镜像版本进行更新。

[root@server1 docker]# docker search nginx

在这里插入图片描述
查看资源。

[root@server1 docker]# docker history nginx:latest

在这里插入图片描述
查看nginx镜像的版本。

[root@server1 docker]# docker pull nginx

在这里插入图片描述
拉取最新版本的镜像。

在这里插入图片描述
查看版本已经更新到1.15了。

搭建私有仓库

Registry工作原理
在这里插入图片描述
index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。
Docker Registry有三个角色,分别是index、registry和registry,client

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

搭建仓库

[root@server1 images]# docker load -i registry.tar 

在这里插入图片描述
导入仓库镜像。
在这里插入图片描述
查看镜像层数信息,我们知道这个镜像使用的端口是5000端口。

[root@server1 images]# docker run -d --name registry -p 5000:5000  \
-v /opt/registry:/var/lib/registry registry:2.3.1

制作仓库,指定端口为5000,同时使用-v选项将/opt/registry挂载到容器内作为存放镜像的地方。

[root@server1 images]# docker tag rhel7:latest localhost:5000/rhel7

给镜像改个名字
在这里插入图片描述
在这里插入图片描述

上传镜像。

[root@server1 registry]# docker pull localhost:5000/rhel7

要使用镜像时直接拉取就可以了。

[root@server1 registry]# docker images

在这里插入图片描述
上传成功。

制作证书

 openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/hang.org.key \
  -x509 -days 365 -out certs/hang.org.crt

在这里插入图片描述
制作证书,设置域名为hang.org

[root@server1 docker]# vim /etc/hosts

因为修改了域名,所以要修改解析。

[root@server1 docker]# docker run -d \
>   --restart=always \
>   --name registry \
>   -v /tmp/docker/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/hang.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/hang.org.key \
> -p 443:443 \		
> -v /opt/registry:/var/lib/registry \
> registry:2.31

在这里插入图片描述
在这里插入图片描述
可以发现443端口打开了。

[root@server1 docker]# cd /etc/docker/
[root@server1 docker]# ls
daemon.json  key.json
[root@server1 docker]# mkdir certs.d
[root@server1 docker]# cd certs.d/
[root@server1 certs.d]# ls
[root@server1 certs.d]# mkdir hang.org
[root@server1 certs.d]# cd hang.org/
[root@server1 hang.org]# ls
[root@server1 hang.org]# cp /tmp/docker/certs/hang.org.crt ca.crt

创建目录,配置文件。

[root@server1 hang.org]# docker tag game2048:latest  hang.org/game2048
[root@server1 hang.org]# docker push hang.org/game2048

在这里插入图片描述
上传镜像,成功上传则证书设置成功。

设置加密

[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# mkdir auth

在默认目录中创建auth目录。

[root@server1 docker]# docker run --entrypoint htpasswd \
  registry:2.3.1 -Bbn yys redhat > auth/htpasswd

创建用户和密码,其中yys是用户名,redhat是密码。

[root@server1 docker]# docker rm -f registry
[root@server1 docker]# docker run -d   --restart=always  \
 --name registry   -v /tmp/docker/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/hang.org.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/hang.org.key -p 443:443 \
 -v /opt/registry:/var/lib/registry -v /tmp/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" \
 -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
 -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2.3.1 

在这里插入图片描述
进行加密认证。
在这里插入图片描述
此时创建了用户但并未登陆。
在这里插入图片描述
未登陆时上传镜像是失败的。

[root@server1 docker]# docker login hang.org
Username: yys
Password: 

输入前面设置的帐号密码进行登陆。

在这里插入图片描述
登陆完成后就可以正常上传镜像了。
在这里插入图片描述
登陆成功后会查看到登陆的用户信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值