Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor

Docker介绍及环境搭建参考:

        Docker系列一: docker介绍&&安装(含离线安装)

        Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor

        Docker系列(三):Idea使用docker打包和发布springboot项目

目录

一、使用Nexus作为镜像仓库

        (一)、使用docker安装nexus

①拉取nexus镜像

②启动nexus

③查看启动日志

④访问Nexus

⑤修改admin默认密码

        (二)、nexus配置docker镜像仓库 

①创建docker-hosted仓库

②docker登陆到nexus仓库

③测试从nexus仓库推送和拉取镜像

二、使用Harbor作为镜像仓库

        (一)、安装Harbor

①安装docker-compose

②:安装Harbor

③配置https

④修改harbor配置

⑤执行安装

⑥访问Harbor

        (二)配置Harbor为镜像仓库

①配置harbor所在主机的host

②创建docker证书目录

③复制客户端证书

④docker添加信任仓库地址

⑤docker登录到harbor

⑥测试harbor拉取和推送镜像

⑦其他


一、使用Nexus作为镜像仓库

        (一)、使用docker安装nexus

①拉取nexus镜像

docker pull sonatype/nexus3

②启动nexus

docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -v /opt/nexus-data:/var/nexus-data sonatype/nexus3

③查看启动日志

docker logs -f nexus3

 当看到如下启动日志,即表示启动成功

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第1张图片

④访问Nexus

直接访问 服务器ip:8081 即可

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第2张图片

 如图所示,首次点击登陆提示了admin的密码存放在/nexus-data/admin.password文件中

 此文件是docker容器中文件,所以进入nexus容器中

⑤修改admin默认密码

        (1)查看docker已启动的容器列表:docker ps

         (2)进入容器

docker exec -it nexus3 /bin/bash

        (3)查看密码

cat /nexus-data/admin.password

         (4)登陆并按照提示修改admin初始密码即可

        (二)、nexus配置docker镜像仓库 

在确保已经登陆到nexus之后接下来配置docker镜像仓库

①创建docker-hosted仓库

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第3张图片

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第4张图片

 Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第5张图片

②docker登陆到nexus仓库

docker添加信任仓库地址: vi /etc/docker/daemon.json

{
  "registry-mirrors": [
     "https://bxsfpjcb.mirror.aliyuncs.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "insecure-registries":
        ["127.0.0.1","192.168.1.119:5000","192.168.1.119:443","192.168.1.119:8082"]
}

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第6张图片

按上所示追加nexus的私服地址

重启docoker

systemctl daemon-reload && systemctl restart docker

docker登陆到仓库

docker login -u admin -p <密码> 192.168.1.119:8082

如下图所示表示登陆成功

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第7张图片

③测试从nexus仓库推送和拉取镜像

先从外网拉取一个ngxin镜像

docker pull nginx

重新打一个tag,标记为私服仓库的镜像

docker tag nginx 192.168.1.119:8082/nginx:latest

推送到nexus仓库

docker push 192.168.1.119:8082/nginx:latest

删除本地nginx镜像

docker rmi  -f

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第8张图片

 查看docker 镜像列表

docker images

 拉取nexus仓库中的nginx镜像

docker pull 192.168.1.119:8082/nginx:latest

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第9张图片

再次查看docker镜像列表

docker images

二、使用Harbor作为镜像仓库

        (一)、安装Harbor

①安装docker-compose

从github上下载docker-compose的可执行包: https://github.com/docker/compose/releases

这里使用的1.28.6版本

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第10张图片

下载好之后上传到服务器放到/usr/local/bin目录下并重命名为docker-compose 

修改可执行权限:

chmod +x /usr/local/bin/docker-compose

查看docker compose版本:

docker-compose -v

②:安装Harbor

 下载离线安装包: https://github.com/goharbor/harbor/releases

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第11张图片

 下载完之后上传服务器,解压并移动解压目录到/usr/local目录下

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第12张图片

③配置https

harbor默认工作方式是http,但是这只能在页面访问,默认harbor推送拉取镜像时走的是https,所以需要配置下https

(1)生成秘钥和自签名整数

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第13张图片

注意如上图中Common Name填入一个域名 

(2)生成证书签名请求

openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.imysh.com.key -out harbor.imysh.com.csr

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第14张图片

注意如上图中Common Name填入上一步中的域名,并填写challenge password 

(3)生成服务器证书

openssl x509 -req -days 3650 -in harbor.imysh.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.imysh.com.crt

最终得到目录下的几个证书文件

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第15张图片

(4)安装证书

将服务器需要的文件拷贝到一个目录下

mkdir -p /data/cert/harbor/ && cp harbor.imysh.com.crt harbor.imysh.com.key /data/cert/harbor/

④修改harbor配置

cd /usr/local/harbor && cp harbor.yml.tmpl harbor.yml && vi harbor.yml

按下图所示修改一下几处

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第16张图片

⑤执行安装

执行安装准备命令

./prepare

执行安装脚本

sh install.sh

过程可能会比较慢,看到如下图所示即表示安装并启动成功

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第17张图片

⑥访问Harbor

http的端口默认设置的80端口,即访问服务器ip即可

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第18张图片

默认用户名admin,密码Harbor12345 ,登录之后即可看到harbor管理界面

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第19张图片

        (二)配置Harbor为镜像仓库

①配置harbor所在主机的host

 添加上图红圈所示,后面的域名是前面步骤中配置harbor证书时填写的域名

②创建docker证书目录

mkdir -p /etc/docker/certs.d/harbor.imysh.com

注意必须是在/etc/docker目录下创建certs.d目录,并在certs.d目录下创建前面步骤中配置harbor证书时填写的域名目录

③复制客户端证书

cp /usr/local/harbor/ca.crt /etc/docker/certs.d/harbor.imysh.com/

④docker添加信任仓库地址

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第20张图片

重启docoker

systemctl daemon-reload && systemctl restart docker

⑤docker登录到harbor

docker login -u admin -p Harbor12345 192.168.1.119:443

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第21张图片

⑥测试harbor拉取和推送镜像

将本地nginx镜像重新打上标签并推送到harbor默认的library项目中

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第22张图片

查看library项目中是否有刚上传的nginx镜像

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第23张图片

删除本地的nginx,然后从harbor中拉取

 Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第24张图片

 Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第25张图片

⑦其他

(1)Harbor停止和启动

cd /usr/local/harbor
# 停止命令
docker-compose down -v
# 启动命令
docker-compose up –d

(2)Harbor添加用户

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第26张图片

 添加完成之后即可看到

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第27张图片

(3)Harbor限制匿名访问

Harbor仓库可以设置为私有

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第28张图片

 也可以给某一个项目添加用户并给用户赋予权限

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第29张图片

查看项目下的用户多了一个devuser

Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor_第30张图片

 (4)Harbor角色说明

超级管理员: 即就是admin,最高的权限

项目管理员: 可以管理整个项目

维护人员: 比项目管理员少了人员和用户管理的功能

开发者: 主要是上传个下载镜像,不能删除项目和镜像

访客: 主要是下载镜像和查看项目的一些配置和人员及日志信息等

受限用户:基本就只能拉取镜像了

另外匿名用户只能查看和下载公开的项目,私有项目无法访问

写在最后:

        Nexus和Harbor都可以作为docker的镜像仓库,但是Nexus不仅可以做为镜像仓库,也可以作为maven、pip、apt、npm、yum等等主流私有仓库;Harbor相比Nexus,管理界面相对友好,并且提供更细致化的权限控制,二者各有优点,可自行选择使用

你可能感兴趣的:(docker)