Nexus3是一个仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问,平常我们在获取maven仓库资源的时候,都是从maven的官方(或者国内的镜像)获取,但假如你的生产环境的服务器无互联网访问权限,此时需要在局域网一个有互联网访问权限的服务器上搭建一个私有的仓库,这样其他有互联网访问权限的服务器可以通过已搭建的私库仓库来下载安装如Maven、apt、yum、gradle、pypi、docker等等,就像是直接通过互联网下载一样。

1. 创建docker-compose.yml文件:

version: "3"
services:
  # 服务名称
  nexus3:
    # 镜像
    image: sonatype/nexus3:3.42.0
    # 容器名称
    container_name: nexus3
    # 重启策略
    restart: on-failure
    # 端口映射
    ports:
      # web服务使用
      - "8081:8081"
      # http仓库使用
      - "8082:8082"
      # https仓库使用,本例不使用
      #- "5000:5000"
    # 挂载数据卷
    volumes:
      # 将主机的/opt/neuxus3/data目录挂载映射到容器的/nexus-data目录
      - /opt/nexus3/data:/nexus-data
    # 设置环境变量
    environment:
      # 配置nexus3服务的内存,避免小规格机器崩掉
      INSTALL4J_ADD_VM_PARAMS: "-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"

2. 创建启动脚本start.sh

# 仓库数据挂载位置
mkdir -p "/opt/nexus3/data"
# 目录权限
chmod -R 777 "/opt/nexus3/data"
# 启动
if [ "$1" == "backend" ]; then
    docker-compose up -d
else
  docker-compose up
fi

3. 启动nexus3,启动会比较慢,需要一段时间才能启动成功

# 方式一、前台启动,查看启动日志调试用
sudo sh ./start.sh

# 方式二、后台启动
sudo sh ./start.sh backend

4. 访问 http://<ip>:8081http://localhost:8081(本地),查看仓库页面

5. 点击右上角“Sign in”,用户名为“admin”,在映射的主机目录/opt/nexus3/data/admin.password文件中查看登录密码

 6. 登录后会有引导窗口,跟着知道重新配置密码,开启匿名访问即可。

7.点击设置图标进入管理页面

 8. 创建二进制存储仓(可选,默认有一个default的)

9.  创建docke仓库

9.1 选择“Repositories”菜单,点击“Create repository”按钮

9.2 选择“docker(hosted)”

  • hosted : 本地存储,即同 docker 官方仓库一样提供本地私服功能。
  • proxy : 提供代理其他仓库的类型,如 docker 中央仓库。
  • group : 组类型,实质作用是组合多个仓库为一个地址。

9.3 配置docker仓库,点击创建

 9.3 添加docker权限

9.4 创建docker角色

 9.4 添加用户

 

 10. 配置/etc/docker/daemon.json文件,添加如下配置(5000端口未开启的无需配置)

{
    "registry-mirrors": [
    ...,
	"http://192.168.78.131:8082"
    ],
    "insecure-registries": [
        "192.168.78.131:8082",
	    "192.168.78.131:5000"
    ]
}

11. 登录docker私仓

# 方式一:
docker login <ip>:8081 -u <username>
# 方式二:
docker login <ip>:8081 -u <username> -p <password>

 12. 查看本地镜像

13. 将需要推送的镜像打tag

docker tag <本地镜像名>:<本地镜像tag> <docker地址>/<镜像名>:<镜像tag>

 14. 推送上一步打tag的镜像到docker私仓

docker push <docker地址>/<镜像名>:<镜像tag>

 15. 访问仓库Web,查看镜像

16. 拉取镜像

docker pull <docker地址>/<镜像名>:<镜像tag>

 17. 可以编辑/etc/hosts文件,添加域名地址映射,通过域名来进行推拉操作,优化使用体验

如本例子中,修改hosts文件,将ip映射为example

修改后,上面中的ip地址就可以全部替换成域名example来使用了 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐