安装完harbor,在客户端docker push遇到的问题

在本地搭建了个harbor仓库,另一个就是普通的docker机器。安装docker-compose就各种问题不断出现,大家可以看https://blog.csdn.net/u012149637/article/details/112968173,现在docker login,docker push也有问题,妈的。气死老子

首先说一下,harbor机器和docker机器都要关闭selinux

getenforce
setenforce 0
vim /etc/selinux/config

SELINUX=disabled

关于sudo vim /usr/lib/systemd/system/docker.service

默认的是--containerd,启动根本没读/etc/docker/daemon.json,如果不改这个,你再怎么配置daemon.json都不管用

查阅了官方文档才知道,https://docs.docker.com/engine/reference/commandline/dockerd/,网上其它博文都是直接让你往fd://后面加daemon.json的内容,比如fd:// --insecure-registries=ip,根本不说为什么,如果太多参数怎么办。都是这个复制那个,那个复制这个。建议大家,可以先百度,然后和官方文档对照着看。毕竟你在官方文档搜不到你的问题

这是daemon.json,因为我一直push失败,把80改成了5000,其实这个端口号并不影响,我也是随便试的,如果你harbor的http用的默认的80,就不需要往后面写端口号了,再下面是harbor的配置文件

harbor的配置文件,其实http默认80就行,只要别被占用,我改成5000主要是找不到push失败的原因,瞎试的。

搭建完harbor想必大家都访问了一遍了吧,记住这个library

在docker tag的时候,前面是harbor机器的ip,然后是端口号,然后跟harbor项目名称,就是刚才的 library ,然后跟你自己取的名字  再跟tag

#提醒:如果你的harbor是80端口,就不要跟端口号了,直接写ip就行,我写5000,是因为harbor的http地址是5000端口

那么命令就是  sudo docker tag e87e2ed7cd76 192.168.237.143:5000/library/myself/nginx:1.1.0

e87e2ed7cd76 是 myself/nginx 镜像的imageId

这时候我们docker login,这里再说一下,如果你的harbor是80端口,后面就不用写端口号了,直接ip就行,最新版docker加-p参数会说使用--password-stdin什么玩意的,所以干脆别加-p,让它弹出输密码就行了

sudo docker login 192.168.237.143:5000 -u admin

这时候我们docker push就可以了,构建镜像的时候严格按照这个命名规范来写,如果你tag不写ip,你push的时候  就会说你将push到docker.io上并要你输入dockerHub的账号密码,这个问题我也找了半天,明明配置了daemon.json 的 insecure-registries,后来看了看企业部署的Dockerfile,前面都要么是域名,要么是ip,后面跟的必须是harbor的项目名称,就是刚才让你记的library。

不然会push不上去,一直在retry,然后就是500 internal server err。要么就说你的镜像名称不符合规范。我特么还在想,tag名称咋就不符合,也没有粗话呀

sudo docker push 192.168.237.143:5000/library/myself/nginx:1.1.0

最后说一下关机后怎么启动harbor,当然不是再执行install.sh了,而是进到harbor目录下,执行sudo docker-compose up -d,-d就是后台运行。停掉harbor就是sudo docker-compose stop

push镜像失败,可以 vim /var/log/messages 查看日志

再次提醒,harbor的http端口号用默认的80就好,以上所有用:5000 的地方,是因为我的harbor http端口号用的5000.

用80端口没有任何影响,用5000就是因为tag名称不规范,push不上去又找不到原因,所以我才换了个端口试试。

如果用的80端口,所有地方就不要写端口号了,直接写ip就行,如果你在daemon.json insecure-registries写的是ip:80

那么登陆(docker login)会走https协议,就是 https://192.168.237.143:80,然后就报错了,是不是很操蛋?

并且tag也不要写成ip:80,不然push也是走的https协议,就跟上面那行话一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值