侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 140 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

使用Nexus3搭建Docker镜像仓库

海阔天空
2022-05-28 / 1 评论 / 0 点赞 / 681 阅读 / 0 字

准备工作

之前一直使用阿里云的docker镜像服务,但是最近阿里云的docker镜像服务收费了,所以只能找别的办法。docker默认提供了一个registry可以用于构建私有镜像服务,但是没有UI界面,使用起来不是很方便。
Google了一下,发现有使用Harbor来搭建Docker镜像仓库的,但是配置非常繁琐。后来发现了Nexus3也支持Docker镜像,太棒了,立刻撸起来!

  • 给你的域名申请一个免费的https证书。因为docker registry默认使用https连接,如果不用https,安全性不高,后期使用也不方便。可以到https://freessl.cn/申请。
  • 安装docker,这个就不用讲了吧:)

安装和配置Nexus

安装nexus

  • 安装nexus3非常简单,只要在docker中运行一下容器即可,但是要注意要开放的端口,因为后面我们要用到。
#数据库服务器docker配置
version: "3.2"
networks:
  network_103:
    ipam:
      config:
        - subnet: 172.103.0.0/24
services:
  nexus: 
    privileged: true
    image: sonatype/nexus3
    container_name: nexus3
    restart: always
    ports: 
      - "8081:8081" #Nexus3 Web UI端口
      - "8108:8108" #docker私有仓库端口
      - "8109:8109" #docker group仓库端口,如果要建docker(group)类型仓库则要用到
    volumes:
      - nexus-data:/nexus-data
    networks:
      network_103:
        ipv4_address: 172.103.0.8 #这里我们给容器设置了固定ip,因为用nginx配置https时需要这个ip。
volumes:
  nexus-data:

打开浏览器,输入http:localhost:8081,首次启动需要输入admin密码,如下图所示,按提示输入开发文件,复制密码登录,然后修改密码即可。
image
进入容器,复制密码登录,然后修改密码。

docker exec -it nexus3 /bin/bash
vi /nexus-data/admin.password

修改密码:
image-1654499673873![修改密码]
是否运行匿名连接:
image-1654499692785![是否运行匿名连接]

创建块存贮

为了保持数据的独立性和便于管理。我们分别建了docker_hub,fitit100_docker_redistry,fifit100_docker_group三个块存贮,用于存贮镜像文件,后面将会用到。
image-1654499743064

创建docker repository

  • 创建docker(hosted)仓库。按下图的配置,创建一个docker(hosted)类型的仓库,注意开放的端口。
    image-1654499761043

  • 创建一个角色,并把所有的docker权限付给她。

image-1654499821453

  • 创建一个用户,并设置其角色为docker。

image-1654499784183

到此,一个私有的docker registry就建立好了,可以通过docker login -u username localhost:8108进行访问。因为docker registry是不允许通过http进行远程访问的。
所以下一步我们通过nginx进行代理访问,并设置https证书,这样就可以远程访问了。手动安装Nginx并配置https证书非常繁琐,而且容易出错,这里强烈建议使用NginxWebUI进行配置。NginxWebUI可以通过Web可视化管理Nginx站点,而且还可以配置https证书,还能自动续费,真是非常好用。

docker-compose安装nginxwebui

docker-compose.yaml文件如下,可自行修改。主要要自己建/home/nginxWebUI目录,并赋予可写和可执行权限。

version: '3'
services:
  mongo:
    image: cym1102/nginxwebui:3.3.1
    restart: always
    container_name: nginxwebui
    privileged: true
    volumes:
      - /home/nginxWebUI:/home/nginxWebUI:rw
    network_mode: "host"
    environment:
      BOOT_OPTIONS: "--server.port=9005"

申请https证书

安装好NginxWebUI后,进入NginxWebUI后台管理界面,点击证书管理-》添加证书,输入域名,选择DNS验证获得,点确定。
image-1654504544303

然后在操作里面点申请,会返回一个txt记录
image-1654504706559

把这个记录添加到域名服务商的域名解析记录里面去,添加完之后再点一次申请按钮,就会自动获得pem和key文件,并保存到服务器的指定路径上。把自动续费选中,今后https还能自动续费,这不就可以白P了吗:)

image-1654504828725

添加反向代理

如下图添加反向代理,注意端口号并选择前文生成的https证书。
image-1654505112890
注意还要添加一个额外参数,否则如果有大文件,docker镜像就无法push上来了。
image-1654505272904

至此,使用nexus3建立docker镜像仓库的过程就算大功告成了。
现在远程运行命令docker login -u username reg.xxx.com就可以访问docker registry了,什么阿里云容器,腾讯云容器都拜拜去吧:)

关于https证书的问题

上文中我们使用nginxwebui自动生成证书并自动续签,但是如果你的网站不能自动续签,那就需要手动生成证书并把pem文件和key文件上传到服务器中即可。如下图

image

上传证书

image-1662451337335

0

评论区