06-nexus搭建Docker私仓

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 06-nexus搭建Docker私仓

使用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:与下面的HTTPS,至少需要勾选其中一个选择框,并配置一个和nexus不同的端口号,例如 8881。将来docker客户端向镜像中心上传镜像时,需要向该端口号进行上传。


  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 端口:


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
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
Java Linux Maven
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
186 3
|
Docker 容器
docker出现问题:启动nexus时报错mkdir: cannot create directory ‘../sonatype-work/nexus3‘: Permission denied解决方案
docker出现问题:启动nexus时报错mkdir: cannot create directory ‘../sonatype-work/nexus3‘: Permission denied解决方案
1564 0
docker出现问题:启动nexus时报错mkdir: cannot create directory ‘../sonatype-work/nexus3‘: Permission denied解决方案
|
Java Linux Maven
Docker系列教程11-使用Nexus管理Docker镜像
原文: Nexus简介 Nexus是一个多功能的仓库管理器,是企业常用的私有仓库服务器软件。目前常被用来作为Maven私服、Docker私服。本文基于Nexus 3.5.2-01 版本进行讲解。
3749 0
|
6月前
|
存储 Java Maven
|
数据安全/隐私保护 Docker 容器
docker 部署nexus
要在Docker上部署Nexus,可以按照以下步骤进行操作: 1. 确保已经安装并配置好Docker。可以在官方网站(https://www.docker.com/)上找到适合你操作系统的安装程序,并按照说明进行安装。 2. 搜索并下载Nexus的Docker镜像。在Docker Hub上搜索"Nexus",找到Sonatype官方提供的Nexus Repository Manager的镜像。 3. 使用以下命令从Docker Hub上下载Nexus镜像: ``` docker pull sonatype/nexus3 ``` 4. 运行Nexus容器。使用以下命令创建并运行一个名为"
889 0
|
Java Maven 数据安全/隐私保护
使用 Docker Compose 部署 Nexus 仓库及使用
本地jar,今天了公司的maven 私仓有问题,和同事讨论了下。正好向大家介绍如何使用 Docker Compose 部署 Nexus 仓库,以帮助您更好地管理和发布您的软件包和依赖项。Nexus 是一个功能强大的仓库管理器,它能够帮助我们管理各种构建工具和项目的组件,并提供了丰富的功能来支持软件开发过程。
389 0
使用 Docker Compose 部署 Nexus 仓库及使用
|
数据安全/隐私保护 UED Docker
|
Java Linux API
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(上)
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(上)
1195 0
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(上)
|
Docker 容器
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(下)
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(下)
171 0
给技术经理找了几款Docker开源镜像仓库,为什么经理选中了Sonatype Nexus(下)
|
Java 关系型数据库 Maven
docker nexus maven
docker nexus maven
2795 0