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

文章目录

  • 1.docker hub(官方镜像仓库)
    • 1.1 登录docker hub
    • 1.2 对推送的镜像打标签
    • 1.3 推送镜像
    • 1.4 拉取镜像
    • 1.5 删除 dockerhub 上的仓库
  • 2.搭建私有仓库
    • 2.1 配置阿里云镜像加速器
    • 2.2 下载 registry 镜像
    • 2.3 上传本地镜像到 registry
    • 2.4 配置 registry 加密(tls)
    • 2.5 测试
  • 3.docker 仓库添加用户认证功能
  • 4.远程主机连接仓库

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

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

1.1 登录docker hub

docker login 要进行推送得先登录 dockerhub 帐号
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第1张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第2张图片

1.2 对推送的镜像打标签

docker tag busybox:latest redtestdocker/busybox:latest
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第3张图片

1.3 推送镜像

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

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第4张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第5张图片

1.4 拉取镜像

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

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

1.5 删除 dockerhub 上的仓库

选择 setting–>delete–> 再输入一次仓库名确认 --> 删除
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第7张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第8张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第9张图片


2.搭建私有仓库

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

2.1 配置阿里云镜像加速器

因为docker的官网在国外,我们使用docker pull 拉取镜像是比较慢的,我们可以使用阿里云提供的镜像加速器。登陆阿里云,注册帐号,找到镜像加速器,就会生成一个加速器地址。
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第10张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第11张图片
在这里插入图片描述
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第12张图片


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查看逻辑卷

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第13张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第14张图片

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第15张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第16张图片


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

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第17张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第18张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第19张图片
这时候仓库搭建完成,但是现在命令行操作不方便,而且如果远程连接时,必须要走 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 端口打开


Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第20张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第21张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第22张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第23张图片


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 加密

在这里插入图片描述
在这里插入图片描述
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第24张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第25张图片


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 登录上传,可以

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第26张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第27张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第28张图片Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第29张图片


4.远程主机连接仓库

server2 上安装docker,并且要做解析在这里插入图片描述
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第30张图片
scp -r /etc/docker/* server2:/etc/docker/ 把证书发送给 server2, 必须有证书才能登录(server1 在启动容器时加入了认证,所以要先认证)

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第31张图片
docker login red.org认证登录
docker pull red.org/nginx 成功拉取
docker run -d --name nginx -p 80:80 red.org/nginx 运行容器
curl localhost

Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第32张图片
Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接)_第33张图片

你可能感兴趣的:(Docker仓库的搭建与管理(官方镜像仓库+私有仓库+用户认证+远程连接))