在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 版权协议,转载请附上原文出处链接和本声明。