nexus搭建私有docker仓库

一、背景

Nexus之前已支持了maven/npm/composer,由于docker仓库和前面几个存在比较大的差异,所以我特此记录下走过的坑。希望能对后来者有所帮助~~(当然,docker私有仓库,大多数是推荐使用harbor,因为我这里的某些历史原因,就沿用nexus)

二、建立仓库

依次建立代理仓库、私有仓库、组合仓库。

需要注意的有以下几点:

  • 代理仓库可以添加多个
  • 私有仓库和组合仓库的端口号,必须暴露出去
  • 组合仓库需要把代理仓库和私有仓库组合起来
    在这里插入图片描述

先建立好存储空间:
在这里插入图片描述

2.1、代理仓库

在这里插入图片描述
在这里插入图片描述

  • https://nbi3meca.mirror.aliyuncs.com
  • http://f1361db2.m.daocloud.io

2.2、私有仓库(既可以pull镜像,又可以push镜像)

在这里插入图片描述

2.3、组合仓库(仅限于pull镜像)

在这里插入图片描述

  • 这里的顺序是:先二方库私有库,再是三方库代理库。
    在这里插入图片描述

三、添加权限

在这里插入图片描述

四、docker客户端

4.1、配置

{
# 对应组合仓库的ip和端口
  "registry-mirrors": ["http://192.168.5.6:8087"],
# 需要把组合仓库和私有仓库都加入进来
# 因为在推送镜像的时候是使用私有仓库,在拉取镜像的时候是使用组合仓库
   "insecure-registries": [
         "192.168.5.6:8086",
         "192.168.5.6:8087"]
}
  • 重启,使配置生效
systemctl daemon-reload && systemctl restart docker

4.2、登录并保存认证

docker login 192.168.5.6:8086 -u admin -p 123456

docker login 192.168.5.6:8087 -u admin -p 123456

  • cat ~/.docker/config.json
{
        "auths": {
                "192.168.5.6:8086": {
                        "auth": "YWRtaW46MTIzNDU2"
                },
                "192.168.5.6:8087": {
                        "auth": "YWRtaW46MTIzNDU2"
                },
                "harbor.xx.cloud": {
                        "auth": "YWRtaW46SGFyYm9xMTIzNDU="
                }
        }
}

好处是不用重复认证,你可以使用如下方法进行解密。

echo -n  "YWRtaW46MTIzNDU2" | base64 -d

echo -n  "YWRtaW46SGFyYm9xMTIzNDU=" | base64 -d

同理,你更可以进行主动加密。

echo -n 'admin:123456' | base64

五、推送和拉取镜像

  • 推送镜像
# 给构建好的image进行打tag
docker tag xxx/devops-service:1.0.7 192.168.5.6:8086/xxx/devops-service:1.0.7
# 推送到指定的docker仓库
docker push 192.168.5.6:8086/xxx/devops-service:1.0.7
  • 拉取镜像
docker pull 192.168.5.6:8086/xxx/devops-service:1.0.7

六、总结

5.1、走过的坑一:连接拒绝

没有暴露8086和8087端口

nexus是使用docker搭建的,需要进行一番修改。

[root@maven3 ~]# vi docker-compose.yml 
version: '3' 
services: 
  nexus: 
    restart: always 
    image: sonatype/nexus3 
#    image: docker.io/sonatype/nexus3
    container_name: nexus3 
    ports:
      - 8081:8081
      - 8082:8082
      - 8083:8083
      - 8084:8084
      - 8085:8085
# 新增8086和8087两个端口号
      - 8086:8086 
      - 8087:8087
    volumes: 
      - /opt/nexus:/opt/sonatype/nexus:Z
      - /data/nexus-data:/nexus-data:Z
  • 重启nexus
[root@maven3 ~]# docker-compose down
Stopping nexus3 ... done
Removing nexus3 ... done
Removing network root_default

[root@maven3 ~]# docker-compose up -d
Creating network "root_default" with the default driver
Creating nexus3 ... done

[root@maven3 ~]# docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                                        NAMES
99f41bdf4993        sonatype/nexus3                 "sh -c ${SONATYPE_..."   14 seconds ago      Up 13 seconds       0.0.0.0:8081-8087->8081-8087/tcp             nexus3
  • 确保8086和8087端口都暴露出去了
    在这里插入图片描述

5.2、404 Not Found

是因为没有Realms:Docker Bearer Token Realm进行激活。

六、说在最后的话

  • 一定要弄清楚端口号
  • docker仓库和npm/maven/composer的差异甚大
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!下面是一个简单的私有Docker镜像仓库搭建教程: 1. 安装DockerDocker Compose:首先,确保你的主机上已经安装了DockerDocker Compose。你可以根据你的操作系统文档中的步骤进行安装。 2. 创建一个目录:在你的主机上创建一个目录来存储你的私有镜像仓库的数据。例如,你可以创建一个名为`docker-registry`的目录。 3. 编写docker-compose.yml文件:在你的`docker-registry`目录下创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3.8' services: registry: restart: always image: registry:2 ports: - 5000:5000 volumes: - ./data:/var/lib/registry ``` 这将启动一个名为`registry`的容器,使用Docker官方提供的`registry:2`镜像。容器将通过`5000`端口对外提供服务,并将数据存储在`./data`目录中。 4. 启动私有镜像仓库:在你的`docker-registry`目录下运行以下命令启动私有镜像仓库: ```bash docker-compose up -d ``` 这将在后台启动私有镜像仓库容器,并将其绑定到`5000`端口。 5. 配置客户端:现在你的私有镜像仓库已经启动,你可以配置Docker客户端来使用它。在你的客户端主机上执行以下命令: ```bash echo "{ \"insecure-registries\": { \"localhost:5000\": {} } }" > /etc/docker/daemon.json sudo systemctl restart docker ``` 这将在`/etc/docker/daemon.json`文件中添加一个配置,以允许Docker客户端信任私有镜像仓库的地址。 现在,你就可以使用私有镜像仓库了。你可以使用`docker push`命令将本地构建的镜像推送到私有仓库,使用`docker pull`命令从私有仓库拉取镜像。 希望这个教程对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值