在harbor测试push/pull命令时,出现了下面错误

[root@harbor-28 harbor]# docker push harbor/test/nginx
The push refers to a repository [docker.io/harbor/test/nginx]  #注意这里
6c7de695ede3: Preparing 
2f4accd375d9: Preparing 
ffc9b21953f4: Preparing 
denied: requested access to the resource is denied

一般是因为没有登录,登录即可:

[root@harbor-28 harbor]#docker login [harbor地址]
Username : [harbor账号]
Password: [harbor密码]
Login  Succeeded

然而我当时没有解决,原因是因为默认总是强制上传到docker.io中,因此我做了以下修改:


 1. 修改/etc/hosts
 		[自己ip]  harbor.io #最好不要写harbor,随便定义
  2. 停掉docker、docker-compose、harbor,修改/etc/docker/daemon.json,修改/harbor/harbor.cfg(有些是.yml)
  	[root@harbor-28 harbor]# docker-compose down -v
  	[root@harbor-28 harbor]# vi /etc/docker/daemon.json
	{
		 "registry-mirrors": ["https://harbor.io"],
		 "insecure-registries":["harbor.io"]
	}
	[root@harbor-28 harbor]# vi harbor.cfg
	   hostname= harbor.io #只修改这一项
  3.重启
  	[root@harbor-28 harbor]# ./prepare
  	[root@harbor-28 harbor]# systemctl daemon-reload && systemctl restart docker
  	[root@harbor-28 harbor]# docker-compose up -d
  4. 重复docker login接着上传

个人猜想:在做标签时一定跟harbor.cfg里的hostname和daemon.json里、和hosts里的相对应,否则容易出现此类问题

还有个问题是为了解决某个问题时,很多博客上写要去修改/etc/default/docker
而我没有这个文件,则需要修改/usr/lib/systemd/system/docker.service

[root@harbor-28 harbor]# vi /usr/lib/systemd/system/docker.service
 [Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/default/docker #添加到这里
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process

[Install]
Type  :quit<Enter>  to exit Vim

然后重启docker


版权声明:本文为qq_36163711原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_36163711/article/details/106231970