3.docker仓库(Nexus、Harbor)的安装

前言

docker 镜像官方仓库,地址:https://hub.docker.com。docker hub存放的是公开的镜像。针对我们开发的项目,他是私有的,所以并不能直接存放到 docker hub 中去。所以就需要去搭建一个私有的 docker 仓库了。
 
docker 仓库类比 maven 仓库即可。当我们自己的应用开发完成后,使用相对应的命令,将项目直接打包成一个镜像,并将镜像上传到仓库后,这样我们就可以在任何装有 docker 的机器上来下载该镜像,并运行为一个容器。
 
好处就是:并不需要再去手动打包镜像,便于镜像的重复利用。
 
在项目开发中,有如下几点好处:

  • 实现快速交付,可以更方便在其他机器上下载镜像运行容器
  • 可以存储公司内部私有镜像,避免暴露到外网
  • 提升镜像下载速度
     

市面上常见的docker仓库有以下4个:

  1. Docker Hub
  2. Aliyun
  3. Nexus
  4. Harbor
     

docker hub 自然就不用多说了,docker官方的公共仓库,私有项目来说,完全不能使用,否则代码就等于是开源了。剩下的3个,一步步来介绍吧,继续看下面👇👇👇

1.Aliyun 镜像仓库

阿里云镜像仓库,不需要我们手动搭建,比较简单,直接使用即可

step 1: 进入阿里云,搜索容器镜像服务,然后进入管理控制台,进入到个人实例
 
在这里插入图片描述
 
就可以看到镜像仓库了
 在这里插入图片描述
 
step 2: 选择访问凭证,设置密码
 
在这里插入图片描述
 
step 3: 创建命名空间,选择自动创建仓库,仓库类型公开/私有视个人情况配置
 
在这里插入图片描述
 
step 4: 开始创建镜像仓库
 
  命名空间选择刚刚创建的kmddsn,仓库名称spring-boot-demo,摘要spring-boot 案例镜像仓库,下一步,代码源选择本地仓库,点击按钮[创建镜像仓库] 即可完成仓库的创建。
 
在这里插入图片描述

 
step 5: 做个docker镜像,创建个spring-boot项目,里面来个HelloController,请求/hello 返回字符串 hello docker,这样一个 /hello 接口就完成了。完成以下3步,一个镜像就完成了
 
1.打jar包,传至linux服务器spring-boot-demo文件夹下
 
在这里插入图片描述
 
2.编写Dockerfile(内容如下,Dockerfile看不懂?不会写?自己学去)
 
Dockerfile文件内容:

# 关联基础镜像 => jdk
FROM openjdk:8
# 将项目 jar 包拷贝到容器中
ADD *.jar app.jar
# 配置项目环境变量
ENV APP_OPTS=""
# JVM 环境变量
ENV JVM_OPTS="-Duser.timezone=Asia/Shanghai -Xms128m -Xmx128m"
# 暴露端口
EXPOSE 8888
# 设置启动时的命令
ENTRYPOINT ["sh", "-c", "java $JVM_OPTS -jar /app.jar $APP_OPTS"]

 
3.根据Dockerfile文件,使用 docker build -t springboot-docker:1.0.0 ./ 命令构建镜像(最后一个./是Dockerfile所在目录,因为 docker build 命令实在 Dockerfile 目录下执行的,所以就是一个 ./,-t 后面是镜像的标签与版本号)
 
在这里插入图片描述
 
通过docker images 命令,查看构建的spring-boot-docker:1.0.0镜像
 
在这里插入图片描述
 
step 6: 参考 step 4 操作指南,推送镜像至 aliyun 仓库(步骤中[]在修改时同步去掉,修改后是-username=abc,而不是-username=[abc],以下是我个人的仓库名称、命名空间等,请以你自己的操作指南为准)
 
1.登录阿里云Docker Registry
 
docker login --username=[用户名] registry.cn-hangzhou.aliyuncs.com
 

2.给镜像打标签
 
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/kmddsn/spring-boot-demo:[镜像版本号]
 
3.推送镜像至阿里云仓库
 
docker push registry.cn-hangzhou.aliyuncs.com/kmddsn/spring-boot-demo:[镜像版本号]
 
推送截图:
 在这里插入图片描述
 
step 7: 从 aliyun 仓库拉取镜像
 
1.登录阿里云Docker Registry
 
docker login --username=[用户名] registry.cn-hangzhou.aliyuncs.com
 
2.从aliyun 仓库拉取镜像
 
docker push registry.cn-hangzhou.aliyuncs.com/kmddsn/spring-boot-demo:[镜像版本号]
 
拉取截图:
 
在这里插入图片描述

2.Nexus

Java 开发中的那个 Maven 私服,对对对,就是这个 Nexus。Nexus它也可以应用于 docker 仓库,但是就需要我们手工来搭建了。

1.Nexus 私服搭建

# step 1:创建nexus持久化目录
mkdir -p /opt/docker/nexus
# 开放权限
chmod 777 -R /opt/docker
# 启动 nexus 容器
docker run -d --restart=always -p 8868:8081 -p 5000:5000 -p 5001:5001 --name nexus -v /opt/docker/nexus:/nexus-data sonatype/nexus3
# PS:命令解释
# -d 后台启动   
# --restart=always 容器只要异常关闭就启动
# -p 8868:8081  容器8081端口映射本机8868端口
# -p 5000:5000  docker-snapshots仓库推送、拉取端口映射(nexus中,5000端口只用于推送镜像,看不懂继续往下看)
# -p 5001:5001  docker-public仓库通用访问端口映射,用来拉取镜像(nexus仓库中,5001端口只用于拉取镜像,看不懂继续往下看)
# --name nexus  自定义容器名称
# -v /opt/docker/nexus:/nexus-data  数据卷绑定:容器目录/nexus-data与本地/opt/docker/nexus目录绑定
# sonatype/nexus3   镜像名称

# 查看admin登录默认密码(也可以在主机/opt/docker/nexus/admin.password 查看)
docker exec -it nexus /nexus-data/admin.password

注意:启动 nexus 容器,这个过程会比较漫长,我们可以通过 docker logs [容器ID] -f 来查看 nexus 启动日志。当只有看到下面这个图片中的内容时,nexus 才算真正启动完成。然后我们通过 xx.xx.xx.xx:8868 就可以访问 nexus了
 
在这里插入图片描述

2.登录控制台

在这里插入图片描述

3.配置nexus仓库

step 1: 添加Blob Store 存储器(为docker创建一个存储器, Type选择File,Name输入docker 即可)
 
在这里插入图片描述
 
step 2: 添加 docker 相关仓库 repositories(点击Create repository进行添加,添加完成后如图所示)
 
在这里插入图片描述
 
repositories说明:(参考maven已有repositories介绍,因为刚开始进来maven相关的库是已经存在的)

  1. maven-public:它的类型是group(分组)。即:仓库所有的访问读取入口,都是从 public 开始,读取会分别从 snapshots、releases、central 中都去找,只要其中一个找到就读取回来),就是本地仓库找不到,就去配置的网络仓库中去找【网络仓库地址,会在docker-public中配置阿里云加速镜像地址】
  2. maven-releases 发布后的jar包,放到release中
  3. maven-snapshots 测试的jar包,放到snapshots中
  4. maven-central 它的类型是proxy(代理)。代理不存数据,是只读的。这个类似配置maven仓库时我们配置的一个aliyun仓库,帮我们去代理到aliyun仓库
     
    step 2.1:docker各个仓库说明
    在这里插入图片描述
    step 2.2:hosted类型仓库创建
    在这里插入图片描述
    step 2.3:proxy类型仓库创建
    在这里插入图片描述
    step 2.4:group类型仓库创建
    在这里插入图片描述
    至此,nexus 仓库配置完成。

4.配置nexus仓库地址为安全的镜像地址

docker 默认非 http 请求均为不信任的请求,都不允许访问。(如果nexus仓库地址是https,则不需要此项配置)

通过 vi /etc/docker/daemon.json 修改配置,添加:
 
"insecure-registries": ["192.168.204.102:5000", "192.168.204.102:5001"]
 
在这里插入图片描述
修改配置后,执行以下2条命令:
 
重新加载配置:systemctl daemon-reload
 
重启docker服务:systemctl restart docker

5.镜像推送至nexus仓库

# step 1:登录nexus仓库  (5000端口可推送、可拉取镜像,此处定义5000端口用于推送镜像,5001端口用于拉取镜像,因为5000端口只能拉取自己推送上去的,不能拉取其他网络镜像,5001则可以)
docker login -u admin 192.168.204.102:5000
# step 2:为镜像打一个tag标签(仓库路径:192.168.204.102:5000   仓库名称:spring-boot-demo)
docker tag [ImageId] 192.168.204.102:5000/spring-boot-demo:[镜像版本号]
# step 3:镜像推送至nexus仓库
docker push 192.168.204.102:5000/spring-boot-demo:[镜像版本号]

推送成功截图

在这里插入图片描述

6.拉取nexus仓库镜像

# step 1:登录nexus仓库  (5001端口用于拉取镜像)
docker login -u admin 192.168.204.102:5001
# step 2:从nexus仓库拉取镜像
docker pull 192.168.204.102:5001/spring-boot-demo:[镜像版本号]

拉取成功截图

在这里插入图片描述

3.Harbor

除了 Docker Hub 以外最早的一个比较受欢迎的 Docker 企业级 Registry 服务器。Nexus 和 Aliyun 都只是能推送和拉取,Harbor就不同了,Harbor 还是中文哦!但是 Harbor 相对来说比较费资源。推荐使用 Harbor,个人觉得更好用

注意:使用 Harbor 必须要先安装 docker 以及 docker-compose

1.Docker Compose 安装

注意:需要注意的是,docker-compose 与docker有版本对应关系,因此在使用docker-compose时需要选择与已安装的docker版本相对应的docker-compose版本,否则可能会出现不兼容或无法正常工作的问题。但是!我在官网一致没有找到 docker 和 docker-compose 的对应关系表啊,有知道的小伙伴能评论发我一下吗??我只找到个 docker compose 发行版本,依赖的 docker 需要升级的版本,docker compose 发行版本地址:https://docs.docker.com/compose/release-notes。如下图所示:
 
在这里插入图片描述
因为 docker 使用的是最新版本:24.0.6,所以 docker compose 也使用了最新版本 2.21.0

Docker Compose 下载地址:https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64
 
在这里插入图片描述

# step 1:下载 docker compose 最新版本
curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# $(uname -s)  系统内核,即:linux
# $(uname -m)  系统架构,即:x86_64

# step 2:将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose

# step 3:创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# step 4:测试是否安装成功
docker-compose --version

在这里插入图片描述

2.Harbor安装

Harbor下载地址:https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgz
 
在这里插入图片描述

# 具体下载到哪一个目录,自己手工指定,本次存放目录:/opt/docker/harbor
# step 1:解压缩 harbor-offline-installer-v2.9.0.tgz
tar zxvf harbor-offline-installer-v2.9.0.tgz

# step 2:进入解压缩后的harbor目录,将配置文件赋值一份
cp harbor.yml.tmpl harbor.yml

# step 3:编辑harbor.yml
vim harbor.yml
# 修改hostname为本机IP:192.168.204.102
# 修改port端口:8858
# 修改Harbor密码,默认为Harbor123456,此处不修改
# 如果没有https配置,把https相关的配置注释掉[port,certificate,private_key],否则step 4会提示错误

# step 4:开始安装前的预编译操作
bash prepare
# step 5:开始安装(安装harbor镜像,对资源要求还是有一定的要求,配置太低可能出现不可预知的错误)
bash install.sh

到这里,说明 harbor 安装成功
 
在这里插入图片描述
 
访问控制台:http://192.168.204.102:8858,输入用户名:admin、密码:Harbor12345
 
在这里插入图片描述

3.配置Harbor仓库地址为安全的镜像地址

docker 默认非 http 请求均为不信任的请求,都不允许访问。(如果nexus仓库地址是https,则不需要此项配置)

通过 vi /etc/docker/daemon.json 修改配置,添加:
 
"insecure-registries": ["192.168.204.102:8858"]
 
在这里插入图片描述

修改配置后,执行以下2条命令:
 
重新加载配置:systemctl daemon-reload
 
重启docker服务:systemctl restart docker

重启后,可以通过 docker info 命令,查看 Insecure Registries 检查受信任仓库是否配置成功
 
在这里插入图片描述
 
重启后,如果发现 harbor 自动重启失败,可以动过 docker psdocker logs [容器ID] 查看错误信息。
 
如果遇到 harbor-jobservice 服务有这个错误, 检查服务里面是否配置有代理(关了代理重启docker,就ok了)
错误如下:Failed on load rest config err:Get “http://core:8080/api/internal/configurations”: dial tcp 172.22.0.8:8080: connect: connection refused

再不济,就执行命令重新安装以下:./install.sh

4.创建项目

点击项目—>新建项目,我创建了一个spring-boot-demo
 在这里插入图片描述
 
除此之外,我们也可以进行用户管理,添加用户,然后进入新建的项目spring-boot-demo,进行成员的配置,允许哪些成员有哪些权限等。此处则不进行配置,直接使用admin用户操作。

5.镜像推送至Harbor仓库

# step 1:登录nexus仓库  (5000端口可推送、可拉取镜像,此处定义5000端口用于推送镜像,5001端口用于拉取镜像,因为5000端口只能拉取自己推送上去的,不能拉取其他网络镜像,5001则可以)
docker login -u admin 192.168.204.102:8858
# step 2:为镜像打一个tag标签(Harbor的规则为:仓库路径/项目名称/镜像名称:镜像版本号)
#(仓库路径:192.168.204.102:8858   项目名称:spring-boot-demo   镜像名称:my-boot-docker)
docker tag [ImageId] 192.168.204.102:8858/spring-boot-demo/my-boot-docker:[镜像版本号]
# step 3:镜像推送至nexus仓库
docker push 192.168.204.102:8858/spring-boot-demo/my-boot-docker:[镜像版本号]

推送成功截图

在这里插入图片描述

6.拉取Harbor仓库镜像

# step 1:登录Harbor仓库  
docker login -u admin 192.168.204.102:8858
# step 2:从Harbor中拉取镜像
docker pull 192.168.204.102:8858/spring-boot-demo/my-boot-docker:1.0

step 2 也可以从Harbor中复制拉取命令,但是下载下来的镜像,通过docker images 查看TAG是
 
在这里插入图片描述
 
复制的命令如下:

docker pull 192.168.204.102:8858/spring-boot-demo/my-boot-docker@sha256:3a8799e83f17342361e54aa5eb099c77cd7d68d9d4c1fc179ca36f1debf2663a

拉取成功截图

下图是在 192.168.204.101 机器上进行的镜像拉取操作(拉取192.168.204.102:8858 Harbor 的镜像)
 
在这里插入图片描述
在这里插入图片描述


本文结束,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛麻袋的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值