介绍

6月6日,被广泛用到的中科大镜像库被关闭,随后国内其他镜像库、镜像加速器也纷纷反映无法正常使用,而在多年前,官方docker hub国内就已经无法访问了。各个技术群纷纷炸锅,寻找解决的方法,我在这里也给大家提供一个方法。

服务器信息
腾讯云轻量应用服务器,配置2c2G40G,香港属地,CentOS 7.6 系统


1. 安装 Docker

使用官方一键安装命令快速安装Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 启动Docker并设置开机自启
systemctl start docker && systemctl enable docker

2. 安装 Docker-compose

因为服务器是香港属地,在这里无需考虑Github网络问题,直接下载docker-compose即可

curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
  • 授权,查看docker-compose版本
chmod 755 /usr/bin/docker-compose
docker-compose version

3. 部署 Nexus3 私有仓库

这里采用docker-compose的方式进行部署,方便日后管理

mkdir /data/nexus -p && cd /data/nexus
vim docker-compose.yml
  • docker-compose.yml 内容
version: '3.1'
services:
  nexus3:
    image: sonatype/nexus3:3.69.0
    restart: always
    container_name: nexus3
    volumes:
      - /etc/localtime:/etc/localtime
      - ./data:/nexus-data
    ports:
      - 8081:8081
      - 8082:8082
      - 8083:8083
    environment:
      - INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs

因为这台轻量服务器只有2G内存,所以要限制一下内存,不然无法正常启动

  • 创建 nexus3 容器
chmod 777 -R data
docker-compose up -d

4. 云平台防火墙添加放行规则

8081 端口用于nexus管理页面,
8082 端口用于docer-proxy也就是镜像加速器服务,
8083 备用
1718425449270.png


4. 配置 Docker-proxy

此时访问 http://公网IP:8081 登录nexus管理页面,默认账号为 admin 默认密码可在服务器上通过 cat data/admin.password 命令查看

4.1 设置新密码

1718425442549.png

4.2 允许匿名访问

1718425460373.png

4.3 创建 Repositories

设置 --> Repository --> Repositories --> Create repository --> docker (proxy)

  • Name: docker-proxy
  • HTTP: 8082
  • Allow anonymous docker pull :
  • Enable Docker V1 API:
  • Remote storage: https://registry-1.docker.io

1718425877669.png

4.4 配置安全领域

设置 --> Security --> Realms
Docker Bearer Token Realm 设置为 Active , 保存

1718426213837.png

4.5 访问测试

此时访问 http://公网IP:8082 出现 Error 400 Not a Docker request 即为正常
1718426279770.png


5. 客户端配置镜像加速器

5.1 配置镜像加速器

sudo tee /etc/docker/daemon.json <<-'EOF' 
{
  "registry-mirrors": ["http://公网IP:8082"]
}
EOF
sudo systemctl daemon-reload 
sudo systemctl restart docker

5.2 拉取镜像测试

docker pull nginx:1.24.0

镜像拉取成功,拉取的速度就取决于服务器的带宽了
1718432076991.png

5.3 查看镜像缓存

1718432179363.png
确认拉取镜像正常后可关闭 8081 端口放行策略,只放行 8082 端口即可



写在最后

到这里部署已经完成了,nexus 是一个非常好用的工具,用于公司内部的私仓库管理,支持maven、npm、docker 和 helm 等类型仓库。对于 docker_group 的功能 ,可以通过 docker_group 绑定 docker 仓库和 k8s 仓库、私有仓库和公共仓库,优先拉取私有仓库,没有再去拉公共仓库,拉过的公共镜像缓存在本地,既能提高效率,也能应对当前环境下的不确定性。

文章作者: hzbb
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 运维小记
自动化 DevOps Nexus
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝