Docker 私有仓库之 Nexus3

前言

最近开发微服务项目越来越多,各种头疼的环境问题接踵而至,打算把一些相对固定的模块打成Docker镜像独立发布,跟业务模块分开维护。原来只是用 Docker Hub 来发布一些自己的镜像,是时候考虑建个自己的 Docker 私服了,不管因为网络的原因,还是出于代码安全考虑,都有必要这样做。刚好Nexus3可以创建 Docker 仓库,还可以跟 Maven 仓库共用,一举两得,就它了。

从网上找了很多安装步骤,发现总有各种问题,所以记录下,送有缘人 ^

环境

CentOS 7.5
sonatype/nexus3
Docker 18.06.1-ce
Oracle JDK8

安装配置

先大概说下安装步骤,用docker运行nexus3,然后再在nexus3里面创建docker仓库。

启动 Nexus 容器

docker run -d --name nexus3 --restart=always \
-p 8081:8081 \
-p 8082:8082 \
-p 8083:8083 \
--mount src=nexus-data,target=/nexus-data \
sonatype/nexus3

用浏览器打开 http://10.108.26.122:8081/,出现 nexus 管理界面则说明启动成功,默认用户名:admin,密码:admin123

配置 Docker 仓库

使用 admin 用户登录管理界面,点击上面的小齿轮按钮进入配置界面。

创建私有仓库

创建一个新的 Docker (hosted) 仓库

在这里插入图片描述

建议给每个仓库创建新的 Blob store,这样每个仓库在 /nexus-data 下面都会有不同的文件夹,但并不是强制的,可以选择默认。

创建指向 Docker Hub 的代理仓库

创建一个新的 Docker (proxy) 仓库

在这里插入图片描述

在这里插入图片描述

创建仓库组对外提供统一的 URL

创建一个新的 Docker (group) 仓库

在这里插入图片描述

在这里插入图片描述

注意:

默认情况下 Docker client 使用 HTTPS 协议和仓库通信,需要配置 SSL 证书,这里就不介绍了,直接使用 HTTP 协议;

Docker 仓库需要两个不同的端口,其中 8082 从代理仓库上拉取镜像、 8083 推送镜像到私服;

Docker 主机访问私服镜像仓库

配置客户端和项目使用 Nexus 仓库

上面我们配置的是 http 协议,与私服通信,首先要配置 Docker daemon 客户端使用 http 协议代替 https 协议。

操作系统不一样配置也有差异,这里介绍 CentOS 的配置,其他的参照 docker 文档。

# vi /etc/docker/daemon.json

{
  "insecure-registries": [
    "10.108.26.122:8082",
    "10.108.26.122:8083"
  ],
  "disable-legacy-registry": true
}

重启 docker

sudo systemctl restart docker

docker client 身份认证

docker login -u admin -p admin123 10.108.26.122:8082

docker login -u admin -p admin123 10.108.26.122:8083

执行以后会生成认证文件 ~/.docker/config.json,有兴趣的可以自己去看看,这里就不列出来了。

仓库已经搭建好了,现在来体验下成果:

pull 镜像

现在可以通过私服拉镜像了(注意使用的是 8082 端口)

# docker pull 10.108.26.122:8082/httpd:2.4-alpine

打开 Nexus 管理页面可以看 Docker 仓库里面已经有了 httpd:2.4-alpine 这个镜像了。

拉取自定义镜像类似

# docker pull 10.108.26.122:8082/test:1.0

push 镜像

创建定制的容器镜像

  1. 首先编写一个定制容器镜像脚本

    # vim Dockerfile

     FROM debian
     MAINTAINER test <test@example.com>
     
     CMD ["echo", "hello world"]
    
  2. 创建镜像

    # docker build -t="test" .

  3. 运行容器测试

    # docker run test

可以看到控制台打印出 hello world 了,证明我们自制的镜像成功。

推送自己的镜像到私服时候需要注意,必需要给镜像打 tag (注意使用 8083 端口)

# docker tag test 10.108.26.122:8083/test:1.0

# docker push 10.108.26.122:8083/test:1.0

搜索镜像

# docker search 10.108.26.122:8083/test

总结

大功告成,终于可以不用担心网络和安全问题了,跟 Maven 仓库使用一样方便,公司内部使用私服是个很好的选择。

参考:

https://blog.sonatype.com/using-nexus-3-as-your-repository-part-3-docker-images

https://blog.youkuaiyun.com/lusyoe/article/details/54926937

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值