Docker仓库搭建

符号化

  • registry
    是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
  • Registry Client
    Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

二、搭建私有仓库

docker hub虽然方便,但是还是有限制
需要internet连接,速度慢
所有人都可以访问
由于安全原因企业不允许将镜像放到外网
好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库

1.下载registry镜像

[root@server1 nginx]# docker pull registry
[root@server1 nginx]# docker images registry
[root@server1 nginx]# docker history  registry:latest

在这里插入图片描述

我们看到registry的端口是5000,数据卷是/var/lib/registry 所以我们需要做端口映射,把数据卷指定挂载到宿主机

2.端口映射

[root@server1 nginx]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry
将本地的镜像上传到仓库
[root@server1 registry]# docker tag yakexi007/game2048 localhost:5000/game2048:latest                  ##  改名
[root@server1 registry]# docker push localhost:5000/game2048

在这里插入图片描述
查看是否上传成功

[root@server1 registry]# curl localhost:5000/v2/_catalog

在这里插入图片描述

5.为Docker仓库添加证书加密功能

链接:参考docker参考文档
实验环境,这里我们需要重新开一台虚拟机。server2,并且下载docker
我们测试从远端拉取我们上传的镜像,发现拉取不到,这是没有相应的注册信息
在这里插入图片描述

1.部署普通的HTTP注册表

编辑daemon.json文件,其默认位置 /etc/docker/daemon.json , 重新启动Docker以使更改生效。

[root@server2 ~]# cd /etc/docker/
[root@server2 docker]# vim daemon.json
{
  "insecure-registries" : ["myregistrydomain.com:5000"]
}
[root@server2 docker]# systemctl reload docker.service

在这里插入图片描述
这是我们再次尝试拉取,成功拉取

[root@server2 docker]# docker pull 172.25.1.1:5000/webserver

在这里插入图片描述

2.使用自签名证书

使用自签名证书,这比不安全的注册表解决方案更安全
这里还需要将刚才编写的注册巍峨文件删除

[root@server2 docker]# rm -fr daemon.json

  • 生成自己的证书
[root@server1 ~]# mkdir  -p  certs
[root@server1 ~]# openssl req \
> -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key \
> -x509 -days 365 -out certs/westos.org.crt

生成证书(域名westos.org要求在主机上有解析)
在这里插入图片描述
如果注册表当前正在运行,请停止它。

[root@server1 ~]# docker stop registry
[root@server1 ~]# docker rm registry

参考:官方文档

[root@server1 ~]# vim /etc/hosts                  ##加上reg.westos.org解析 ,server2相同
将westos.org..crt文件复制到 /etc/docker/certs.d/reg.westos.org/ca.crt每个Docker主机上。您无需重启Docker。
[root@server1 ~]# mkdir  /etc/docker/certs.d/reg.westos.org -p
[root@server2 ~]# mkdir  /etc/docker/certs.d/reg.westos.org -p
[root@server1 ~]# cp certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
拷贝证书到其他docker主机
[root@server1 ~]# cd /etc/docker/certs.d/reg.westos.org/
[root@server1 reg.westos.org]# scp ca.crt server2:/etc/docker/certs.d/reg.westos.org/
重新启动注册表,将其定向为使用TLS证书。此命令将certs/目录绑定安装到容器中的/certs/,并设置环境变量,该变量告诉容器在何处找到domain.crt anddomain.key文件。注册表在端口443(默认的HTTPS端口)上运行。
[root@server1 ~]# docker run -d --name registry -p 443:443 -v /opt/registry:/var/lib/registry -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 registry

测试:
server1上传,server2下载

[root@server1 ~]# docker tag busybox:latest reg.westos.org/busybox:latest
[root@server1 ~]# docker push reg.westos.org/busybox:latest
[root@server2 ~]# docker pull reg.westos.org/busybox:latest

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

3.本地基本身份验证

实现访问限制的最简单方法是通过基本身份验证(这与其他Web服务器的基本身份验证机制非常相似)。本示例使用本机基本身份验证htpasswd来存储机密。
参考:https://docs.docker.com/registry/deploying/#get-a-certificate

创建一个密码文件

[root@server1 ~]# yum install -y httpd-tools
[root@server1 ~]# mkdir auth
[root@server1 ~]# htpasswd -B -c auth/htpasswd sun
[root@server1 ~]# docker rm -f registry          ## 停止注册表。
[root@server1 ~]# docker run -d --name registry -p 443:443 -v /opt/registry:/var/lib/registry -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
## 使用基本身份验证启动注册表。

注意路径问题

测试上传镜像

[root@server1 ~]# docker tag mario:latest reg.westos.org/mario:latest
[root@server1 ~]# docker push reg.westos.org/mario:latest

在这里插入图片描述
我们发现没有认证,所以不能上传。
尝试从注册表中提取镜像,或将图像推入仓库。这些命令都是失败的。

需要登录到注册表。

[root@server1 ~]# docker login reg.westos.org

在这里插入图片描述
再次尝试上传,显示上传成功。
在这里插入图片描述
尝试远端拉取镜像,显示失败,没有认证信息。

[root@server2 ~]# docker pull reg.westos.org/mario

在这里插入图片描述
登陆

[root@server2 ~]# docker login  reg.westos.org
Username: sun
Password: 
[root@server2 ~]# docker pull reg.westos.org/mario

在这里插入图片描述

二、harbor仓库

软件下载:harbor-offline
部署:(依赖性 docker 17.06.0-ce+ and docker-compose 1.18.0+)

链接: harbor-offline-install提取码: 2azb

1.软件下载

[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.1.tgz 
[root@server1 ~]# cd harbor/
[root@server1 harbor]# mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
[root@server1 harbor]# chmod +x /usr/local/bin/docker-compose
[root@server1 harbor]# docker rm -f registry
[root@server1 ~]# cp -r certs/ /             ##因为下面配置文件里我选择了放在/下,所以这里将证书复制到根下了。

2.修改配置信息

[root@server1 harbor]# vim harbor.yml             ## 修改内容如下
hostname: reg.westos.org
  certificate: /certs/westos.org.crt
  private_key: /certs/westos.org.key
harbor_admin_password: westos

在这里插入图片描述

[root@server1 harbor]# ./install.sh                 ##进入默认,不加任何选项

在这里插入图片描述

[root@server1 harbor]# docker-compose ps
[root@server1 harbor]# docker ps

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

3.登陆到web页面

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
推送的路径查看
在这里插入图片描述

4.重新获取认证

[root@server1 harbor]# docker logout reg.westos.org
Removing login credentials for reg.westos.org
[root@server1 harbor]# docker login reg.westos.org
Username: admin
Password: 
此处账号密码和配置文件中相同,就是登陆web页面的账号密码。

在这里插入图片描述

5.上传镜像

[root@server1 harbor]# docker tag mario:latest reg.westos.org/library/mario:latest
[root@server1 harbor]# docker push reg.westos.org/library/mario:latest

在这里插入图片描述
到web页面查看是否上传成功
在这里插入图片描述在这里插入图片描述
在远端拉取镜像时,我们可以直接指定我们的私有仓库进行下载,如果私有仓库中没有,再从网络上下载。
这里我们编辑一下文件

[root@server2 ~]# cd /etc/docker/
[root@server2 docker]# vim daemon.json
{
  "registry-mirrors" : ["https://reg.westos.org"]
}
[root@server2 docker]# systemctl reload docker.service
[root@server2 docker]# docker pull mario


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/286e7fc799fc1ed58a82ed48c56d3250.png)
![img](https://img-blog.csdnimg.cn/img_convert/356341e5f15378ff1a4b5d740792cf98.png)
![img](https://img-blog.csdnimg.cn/img_convert/68a467f9a3220d6191da3249d152380a.png)
![img](https://img-blog.csdnimg.cn/img_convert/d7044ab328ac00f3a2e5cc24999e650c.png)
![img](https://img-blog.csdnimg.cn/img_convert/d382e5a230701cc5413658891604f51f.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/e06aea55cb7307ea5eabd66c8cf66098.jpeg)



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/4b2f4581f2cc2f84b90dd76325f4c310.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/69fcc033fcbd4f75bebd6a9b4fa80898.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/0e6e2d563619779d8612f811c388de70.jpeg)

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-i0wholt4-1712830275754)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-GLTgeBok-1712830275755)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-ZQGZJjzB-1712830275755)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值