07-nexus搭建docker私仓

简介: 本文介绍如何使用Nexus搭建Docker私有仓库,包括启用Docker Realm、创建Blob存储、配置docker-hosted仓库及端口设置。同时涵盖客户端镜像的导出导入、配置HTTP不安全仓库、登录认证、镜像打标与推送等完整流程,实现企业内网镜像的安全管理与分发。

使用nexus创建docker私有仓库


Nexus的安装请参考该文档:https://www.yuque.com/yzxb/jenkins/fgeqv69dg9o5bgic



Nexus配置Docker仓库步骤;


  1. nexus默认docker是失效的,需要 在security --> Realms,将docker配置成Active
  2. RepositoryBlob Store 中创建一个用于存放docker镜像的存储。内网没有S3的话,把Type配置为file就行。

S3:Simple Storage Service,简单对象存储服务,即云存储。


  1. RepositoryRepositories 中创建一个新的资源库,类型为 docker-hosted


创建的 docker-hosted资源库的相关配置:


  1. Name:指定该资源库的名称,例如就叫 docker-hosted
  2. Online:默认勾选即可
  3. HTTP与下面的HTTPS,至少需要勾选其中一个选择框,并配置一个和nexus不同的端口号,例如 8881。将来docker客户端向镜像中心上传镜像时,需要向该端口号进行上传。
  4. HTTPS:如果服务器可以开启https服务,则也可以勾选HTTPS,然后配置一个端口号,接收docker客户端上传上来的镜像。
  5. Allow anonymous docker pull:允许匿名上传,默认不勾选
  6. Enable docker V1 API:是否启用 docker早期V1版本的API,默认不勾选,即只启用V2 APIhttp://xxx.xxx.xxx.xxx:8881/v2/
  7. Blob Store:选择上面创建的docker镜像的存储
  8. Deployment Policy:是否允许重复上传同一个资源,默认允许


配置好之后,修改防火墙设置,开启刚刚配置的8881 端口:


vim /etc/sysconfig/iptables


添加:


-A INPUT -p tcp -m tcp --dport 8881 -j ACCEPT


重启iptables:


service iptables restart


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


镜像下载和导出:


# 下载镜像
docker pull mysql:8.0.28
# 将镜像导出成本地tar文件
docker save -o mysql-8.0.28.tar mysql:8.0.28


镜像的导入:


# 将本地文件导入到docker镜像中(docker会自动解析出文件中的tag,无需手动指定)
docker load < mysql-8.0.28.tar


docker 客户端向私仓上传镜像


配置docker允许接收http请求


docker默认只接收https请求,而我们的nexus私仓如果配置的是HTTP接口的话,docker直接连会报错:


server gave HTTP response to HTTPS client


需要配置docker允许连接我们私仓的http


vim /usr/lib/systemd/system/docker.service


在其中的ExecStart 选项后面,添加 --insecure-registry {docker 私有镜像库 IP} --ipv6=false


例如:


[Service]
#  前面的-H参数可能不同,不需要管,只需在最后面加上我们的私仓地址即可:--insecure-registry 192.168.x.xxx:8881 --ipv6=false
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --insecure-registry 192.168.x.xxx:8881 --ipv6=false


然后重启docker:


# centos6 的命令
sudo chkconfig daemon-reload
sudo service docker restart
# centos7 的命令
sudo systemctl daemon-reload
sudo systemctl restart docker


也可以在/etc/docker/daemon.json 中进行配置:


{
    "insecure-reigstries":["192.168.xxx.xxx:8881"]
}


向私仓推送镜像


  1. 如果私仓不允许匿名上传镜像,则需要先进行登陆。(一般私仓都不允许匿名上传,nexus默认匿名上传也没有勾选)
# --username后面为nexus用户名,执行命令后会提示输入密码
docker login --username=admin http://192.168.xxx.xxx:8881
# 登录之后,会在 $HOME/.docker/config.json 中记录下登录的用户信息,之后便不需要再进行登陆操作
# 如果要取消登录,则只需执行以下命令
# docker logout http://192.168.xxx.xxx:8881


  1. 将要上传的镜像重新设置Tag
    docker按照镜像名称区分上传的资源库。
    例如:
    mysql:8.0.28会被上传到docker官方dockerhub
    tengyer/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格式:
# 将mysql:8.0.28复制出一个私仓格式的Tag
# 该操作在 docker images中会多出一个复制出来的tag,但是ImageId和原始的相同
# 加个official命名空间,方便区分这个镜像是从官方镜像下载下来的,不加命名空间也可以上传
docker tag [ImageId] xxx.xxx.xxx.xxx:8881/official/mysql:8.0.28


  1. 将修改好Tag的镜像进行上传:
docker push xxx.xxx.xxx.xxx:8881/official/mysql:8.0.28


目录
相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
43146 6
Hadoop入门(一篇就够了)
|
jenkins 持续交付 Docker
Jenkins - 插件安装失败处理方法
Jenkins - 插件安装失败处理方法
11797 1
Jenkins - 插件安装失败处理方法
|
9月前
|
网络协议 关系型数据库 MySQL
nexus搭建docker私仓 使用nexus创建docker私有仓库
本文介绍如何使用Nexus搭建Docker私有仓库,包括Nexus中启用Docker仓库、创建Blob存储、配置docker-hosted仓库及端口设置,并说明防火墙开放与Docker客户端配置insecure-registry的方法,实现镜像的推送与拉取。
929 0
|
架构师 Linux Docker
三分钟让Dify接入Ollama部署的本地大模型!
本文详细介绍了如何在 Dify 中接入 Ollama 模型,包括模型添加、参数配置及常见问题解决。通过运行 Ollama 服务并与 qwen2:0.5b 模型交互,实现本地化大模型应用开发。同时提供了 Docker、Mac、Linux 和 Windows 平台上 Ollama 的部署与环境变量设置指南,帮助开发者快速上手。更多实战技巧可访问[编程严选网](http://www.javaedge.cn/)或关注作者的 Github 仓库。
14463 5
三分钟让Dify接入Ollama部署的本地大模型!
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
7603 1
|
Java Maven
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
在执行Maven项目中的`install`命令时,遇到编译插件版本不匹配的错误。具体报错为:`maven-compiler-plugin:3.13.0`要求Maven版本至少为3.6.3。解决方案是将Maven版本升级到3.6.3或降低插件版本。本文详细介绍了如何下载、解压并配置Maven 3.6.3,包括环境变量设置和IDEA中的Maven配置,确保项目顺利编译。
18011 5
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
阿里云镜像公共仓库使用
这篇文章介绍了如何使用阿里云镜像公共仓库,包括登录管理界面、创建命名空间、推送和拉取镜像的详细步骤。
14547 5
阿里云镜像公共仓库使用
|
前端开发 JavaScript API
2025年前端框架是该选vue还是react?有了大模型-例如通义灵码辅助编码,就不用纠结了!vue用的多选react,react用的多选vue
本文比较了Vue和React两大前端框架,从状态管理、数据流、依赖注入、组件管理等方面进行了详细对比。当前版本和下载量数据显示React更为流行,但Vue在国内用户量增长迅速。Vue 3通过组合式API提供了更灵活的状态管理和组件逻辑复用,适合中小型项目;React则更适合大型项目和复杂交互逻辑。文章还给出了选型建议,强调了多框架学习的重要性,认为技术问题已不再是选型的关键,熟悉各框架的最佳实践更为重要。
12182 1
|
域名解析 运维 网络协议
推荐一款专业级的动态域名解析系统 - bind webadmin
`bind webadmin`是一款基于Bind9打造的高效DNS管理系统,简化了DNS配置与管理流程,适用于动态IP环境下的远程访问需求。此系统不仅便于维护,还支持API接口,方便自动化操作与第三方应用集成,特别适合远程办公、智能家居及各类物联网应用场景。其自托管特性保障了数据的安全与可控性,同时提供了详尽的中文安装教程,易于部署。项目地址:[bindwebadmin](https://github.com/guofusheng007/bindwebadmin.git)。建议使用阿里云主机以获得最佳性能。

热门文章

最新文章