问题一:docker拉取镜像提示 connect: connection refused
检查harbor是否正常启动,正常启动时一般会运行下面这些相关镜像
如果正在运行的相关镜像只有一个或两个,说明harbor没有正常启动,需要重新启动,harbor 通过docker-compose.yml配置文件的形式管理,所以需要通过以下命令进行重启
#停止
docker-compose stop
#启动
docker-compose up -d
问题二:从harbor仓库拉取镜像时提示
server gave HTTP response to HTTPS client
这是因为Docker自从1.3.X之后docker与registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以出现以上错误
解决方法一:
harbor配置https方式访问
解决方法二:
在docker server启动的时候,增加启动参数,默认使用HTTP访问,由于是全局修改,可能会对其他服务产生影响,故不推荐
vim /usr/lib/systemd/system/docker.service
在12行后面增加 `–insecure-registry ip:port 保存退出
解决方法三:
在 /etc/docker/daemon.json 文件中增加以下内容,根据自己的harbor配置修改ip和端口,如果文件不存在则新建文件
{ "insecure-registries":["10.xx.xxx.xx:9091"] }
按照上面任意一种方法修改后都需要重启docker 服务
systemctl daemon-reload
systemctl restart docker
问题三:向远程仓库中push镜像时提示
unauthorized to access repository: xx/xxxx, action: push: unauthorized to access repository: xx/xxxx, action: push
这是因为服务器之前没有登录过harbor,没有生成认证信息,只需进行登录操作输入用户名密码即可,将下面的ip和端口根据实际的harbor地址进行修改
docker login 123.123.123.123:9091
登录成功后认证信息保存在 /root/.docker/config.json 文件中
问题四: harbor.yml 配置文件设置harbor hostname为本机IP时提示
ERROR:root:127.0.0.1 can not be the hostname
hostname不能使用127.0.0.1,需要改为 localhost
问题五:
iptables: No chain/target/match by that name
找不到docker服务启动时定义的自定义链,可以通过重启docker服务重新生成自定义链DOCKER
iptables -t filter -F
iptables -t filter -X
systemctl restart docker
还有可能是iptables工具版本太低,导致有一些高级功能不支持
问题五: 使用 docker service update
或 docker stack deploy
时提示
image could not be accessed on a registry to record its digest.
由于服务采用了swarm集群,服务部署时可能会发布到任一节点,如果服务发布的节点没有进行docker login,就会出现这个提示信息,需要在每一个节点上进行docker login,具体方法可以参考问题三