Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)

1.docker hub(官方镜像仓库)

需要登录 https://hub.docker.com–> 注册帐号

1.1 登录docker hub

docker login 要进行推送得先登录 dockerhub 帐号
在这里插入图片描述
在这里插入图片描述

1.2 对推送的镜像打标签

docker tag busybox:latest redtestdocker/busybox:latest
在这里插入图片描述

1.3 推送镜像

docker push redtestdocker/busybox:latest 尽量挑选小的镜像去推送,快
再回到网页,可以看到相应的镜像已经推送成功

在这里插入图片描述
在这里插入图片描述

1.4 拉取镜像

(可以先删除 busybox 镜像,已经有的话只会进行更新)
docker pull redtestdocker/busybox:latest

在这里插入图片描述

1.5 删除 dockerhub 上的仓库

选择 setting–>delete–> 再输入一次仓库名确认 --> 删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.搭建私有仓库

搭建私有仓库的原因
1.dockerhub 需要连网,慢;
2.所有人都可以访问;
3.企业内部镜像放到外网不安全
4.docker 公司已经把 registry 开源,可以搭建私有的

2.1 配置阿里云镜像加速器

因为docker的官网在国外,我们使用docker pull 拉取镜像是比较慢的,我们可以使用阿里云提供的镜像加速器。登陆阿里云,注册帐号,找到镜像加速器,就会生成一个加速器地址。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.2 下载 registry 镜像

docker pull registry下载 registry 镜像
docker images
docker history registry:latest
docker run -d -p 5000:5000--name registry registry 运行并做端口映射
netstat-tnlp 看到本地的 5000 端口已经打开
docker volume ls查看逻辑卷

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


2.3 上传本地镜像到 registry

docker tag nginx:latest localhost:5000/nginx:latest#需要先给镜像重新打 tag
docker push localhost:5000/nginx ##通过本机 5000 端口进行上传
curl localhost:5000/v2/_catalog ##查看仓库内容,v2 表示 registry 版本是 2 版本 ;也可以在本地挂载的目录中查看
tree docker 查看目录结构,看到 nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时候仓库搭建完成,但是现在命令行操作不方便,而且如果远程连接时,必须要走 tls 加密,不然用户名密码是名文,不安全。


2.4 配置 registry 加密(tls)

可以在https://docs.docker.com/registry/insecure 复制
mkdir -p certs 创建证书目录

 opensl req \ #生成加密证书和 key 
 >-newkeyrsa:4096-nodes-sha256-keyoutcerts/westos.org.key\ 
 >-x509-days365-outcerts/westos.org.crt

CN->Shaanxi->Xi'an->Westos->Linux->red.org(最好写域名)->[email protected]
ls certs/

docker rm -f registry删除,要重载 registry

docker run -d \ 
> --restart=always\ ##表示容器开机自启动 
> --name registry\ > -v"$(pwd)"/certs:/certs\ ##指定数据目录 
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443\ ##-e 表示编辑容器运行的参数 
> -eREGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt\ ##指定证书文件
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key\ ##指定key
> -p 443:443\ 
> registry

netstat -tnlp 443 端口打开


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.5 测试

先要配置域名的解析,默认是以域名方式通信
mkdir -p /etc/docker/certs.d/red.org 创建证书目录
cp/ root/certs/red.org.crt /etc/docker/certs.d/red.org/ca.crt拷贝证书
docker tag nginx:latest red.org/nginx:latest 打 标 签 , red.org 必须要有解析
docker push red.org/nginx上传成功,此时使用的就是 tls 加密

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.docker 仓库添加用户认证功能

1 添加用户
mkdir auth

docker run --rm\ 
>--entrypointht passwd\ 
>registry-Bbnadminwestos
>auth/htpasswd

2 再次添加用户
docker run --rm --entrypoint htpasswd registry -Bbn wsp redhat >> auth/htpasswd

3.用户认证
docker rm -f registry

docker run -d 
--restart=always 
--name registry 
-v "$(pwd)"/certs:/certs 
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/red.org.crt 
-e REGISTRY_HTTP_TLS_KEY=/certs/red.org.key 
-p 443:443 
-v "$(pwd)"/auth:/auth 
-e "REGISTRY_AUTH=htpasswd" 
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
registry

4.测试
docker login westos.org 测试认证登录
docker logout westos.org 测试认证登出
docker push westos.org/nginx 无法上传
docker login westos.org 登录上传,可以

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述


4.远程主机连接仓库

server2 上安装docker,并且要做解析在这里插入图片描述
在这里插入图片描述
scp -r /etc/docker/* server2:/etc/docker/ 把证书发送给 server2, 必须有证书才能登录(server1 在启动容器时加入了认证,所以要先认证)

在这里插入图片描述
docker login red.org认证登录
docker pull red.org/nginx 成功拉取
docker run -d --name nginx -p 80:80 red.org/nginx 运行容器
curl localhost

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章