当前位置: 首页 > news >正文

06-nexus搭建Docker私仓


使用nexus创建docker私有仓库

Nexus的安装请参考该文档:https://www.yuque.com/tmfl/pom/uumrx2

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=falseExecStart=/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
http://www.lryc.cn/news/67394.html

相关文章:

  • 【RS专题】eval层混淆和逻辑完整分析 - 扣代码终结篇
  • 基于matlab使用主动声纳系统进行水下目标检测
  • [socket]hpsocket-pull模式
  • 数据分析师 ---- SQL强化(3)
  • 微信小程序商品分类页最佳实践
  • 正则化解决过拟合
  • 在 Windows 上安装 Helm包
  • Clion开发STM32之OTA升级模块(一)
  • Java供应链安全检测SDL方法论
  • Magic-API的部署
  • 程序进制换算
  • Packet Tracer - 使用 CLI 配置并验证站点间 IPsec VPN
  • 【华为OD机试真题】最小的调整次数(python版)100%通过率 超详细代码注释 代码解读
  • WPF中嵌入web网页控件 WebBrowser
  • Kafka原理之消费者
  • PCIe的capability扩展空间字段解释
  • 力扣sql中等篇练习(二十)
  • 【神经网络】tensorflow -- 期中测试试题
  • 计算机基础--计算机存储单位
  • 大数据Doris(十六):分桶Bucket和分区、分桶数量和数据量的建议
  • 【webrtc】web端打开日志及调试
  • C++ Primer第五版_第十六章习题答案(61~67)
  • python定时任务2_celery flower计划任务
  • 地狱级的字节跳动面试,6年测开的我被按在地上摩擦.....
  • 怎么开发外贸网站
  • 从 Elasticsearch 到 Apache Doris,10 倍性价比的新一代日志存储分析平台|新版本揭秘
  • H5 + C3基础(H5语义化标签 多媒体标签 新表单标签)
  • 低代码平台选择指南:如何选出最适合你的平台?
  • 软考A计划-重点考点-专题十二(JAVA程序设计)
  • 亚马逊云科技工业数据湖解决方案,助力企业打通各业务场景数据壁垒