Lazy loaded image
编程
📗Day07-nexus搭建docker私仓
字数 1111阅读时长 3 分钟
2021-2-10
2025-8-13
type
status
date
slug
summary
tags
category
icon
password

使用nexus创建docker私有仓库

Nexus的安装请参考该文档:https://www.yuque.com/tmfl/pom/uumrx2
Nexus配置Docker仓库步骤;
  1. nexus默认docker是失效的,需要 在security --> Realms,将docker配置成Active
  1. RepositoryBlob Store 中创建一个用于存放docker镜像的存储。内网没有S3的话,把Type配置为file就行。
S3:Simple Storage Service,简单对象存储服务,即云存储。
  1. RepositoryRepositories 中创建一个新的资源库,类型为 docker-hosted
创建的 docker-hosted资源库的相关配置:
  1. Name:指定该资源库的名称,例如就叫 docker-hosted
  1. Online:默认勾选即可
  1. HTTP:,并配置一个和nexus不同的端口号,例如 8881。将来docker客户端向镜像中心上传镜像时,需要向该端口号进行上传。
    1. 与下面的HTTPS,至少需要勾选其中一个选择框
  1. HTTPS:如果服务器可以开启https服务,则也可以勾选HTTPS,然后配置一个端口号,接收docker客户端上传上来的镜像。
  1. Allow anonymous docker pull:允许匿名上传,默认不勾选
  1. Enable docker V1 API:是否启用 docker早期V1版本的API,默认不勾选,即只启用V2 APIhttp://xxx.xxx.xxx.xxx:8881/v2/
  1. Blob Store:选择上面创建的docker镜像的存储
  1. Deployment Policy:是否允许重复上传同一个资源,默认允许
配置好之后,修改防火墙设置,开启刚刚配置的8881 端口:
添加:
重启iptables:

docker客户端的镜像导出和导入

镜像下载和导出:
镜像的导入:

docker 客户端向私仓上传镜像

配置docker允许接收http请求

docker默认只接收https请求,而我们的nexus私仓如果配置的是HTTP接口的话,docker直接连会报错:
需要配置docker允许连接我们私仓的http
在其中的ExecStart 选项后面,添加 --insecure-registry {docker 私有镜像库 IP} --ipv6=false
例如:
然后重启docker:
也可以在/etc/docker/daemon.json 中进行配置:

向私仓推送镜像

  1. 如果私仓不允许匿名上传镜像,则需要先进行登陆。(一般私仓都不允许匿名上传,nexus默认匿名上传也没有勾选)
  1. 将要上传的镜像重新设置Tag。docker按照镜像名称区分上传的资源库。例如:mysql:8.0.28会被上传到docker官方dockerhubtengyer/helloworld:lasted会被上传到dockerhub的tengyer命名空间中;registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名称:[镜像版本号] 会上传到阿里云指定命名空间中;ccr.ccs.tencentyun.com/命名空间/hello-world:会上传到腾讯云指定命名空间中;hub.c.163.com/命名空间/hello-world:会上传到网易数帆指定命名空间中;所以,我们如果要上传到我们的私仓,需要将Tag修改为xxx.xxx.xxx.xxx:8881/命名空间/mysql:5.0.27格式:
  1. 将修改好Tag的镜像进行上传:
上一篇
Day06-Docker镜像
下一篇
Day08-Registry搭建docker私仓