docker login 登录harbor报错:Error response from daemon: Get ...: unauthorized: authentication required

在测试Harbor企业镜像仓库时遇到dockerlogin认证失败的问题,经过排查,发现是数据库中的密码问题。解决方案包括删除/data目录及容器,重新安装或直接在harbor-db容器内修改registry数据库中harbor_user表的密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker login 登录harbor报错:Error response from daemon: Get “http://harbor.test.cn/v2/”: unauthorized: authentication required

1、问题背景

  • 测试中创建harbor企业镜像仓库,登录时被拒绝unauthorized: authentication required
docker login -uadmin -pasdf harbor.test.cn
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "http://harbor.test.cn/v2/": unauthorized: authentication required

image-20230309193108039

2、排查思路

  • 本地hosts文件错误???
  • /etc/docker/daemon.json文件错误???
  • harbor.yml文件修改问题???
  • 修改完daemon.json没有重启docker服务???
  • docker容器启动失败???
  • docker与docker-compose或者是harbor与docker-compose版本不兼容???

3、解决方法

上面的问题已经全部排查,发现均正常

3.1 第一次尝试

  • 我尝试从网页登录,在网页直接输入harbor里配置的密码登录

image-20230309194019319

发现居然网页都登不进去,这就是密码问题,然后我尝试以下操作

1、删除所有的容器,从新调用./install.sh文件进行安装–>密码登录还是报错

2、删除所有的容器,删除harbor.tar.gz压缩包,从新上传解压安装–>密码登录还是报错

排除了安装包和docker服务版本的问题后,我怀疑本地有缓存,即使我删除了所有的容器也没有用

3.2 检查harbor的脚本

揣着怀疑的心态,我检查了install.sh脚本运行自动生成的docker-compose.yml文件,发先里面创建了大量的volume数据卷

  • 存放log的

image-20230309194826063

  • 存放数据库的

image-20230309195002673

  • 存放缓存redis的

image-20230309195035490

  • 其他的volumes

image-20230309195110549

image-20230309195124018

  • /data目录下所有的volumes

image-20230309195208753

我测试删除所有的容器,发现这些目录依然存在,即使我删除harbor压缩包从新安装,依然会调用这些目录

而存放登录密码信息的就存放在数据库里

3.3 解决问题

找到了问题所在,解决就变得简单起来

3.3.1 方法1

最快的方法,删除/data目录和所有容器,排除占用的端口,删除docker-compose.yml,丛新运行install.sh脚本进行创建

3.3.2 方法2

如果生产环境中,harbor中已经存放了大量的镜像,不能删除容器,可尝试此方法

  • 查看创建的容器

image-20230309195844560

  • 登录harbor-db这个容器,并登入psql数据库内,默认密码是root123

image-20230309200322697

  • 切换到registry这个数据库中,查看里面的表信息

image-20230309200602599

  • 找到harbor_user这个表->里面存放了登录的信息

image-20230309200641382

  • 查看密码的加密方式

image-20230309200737885

  • 修改登录密码为初始密码Harbor12345
update harbor_user set password='c999cbeae74a90282c8fa7c48894fb00', salt='nmgxu7a5ozddr0z6ov4k4f7dgnpbvqky' where username='admin';

image-20230309200847717

  • 从新登录成功

image-20230309201201291

image-20230309201131745

### Docker Desktop 拉取镜像失败解决方案 当遇到 `Error response from daemon: Get "https://registry-1.docker.io/v2/"` 错误时,通常是因为网络连接问题或者Docker配置不当引起的。以下是详细的解决办法: #### 修改DNS设置 修改系统的DNS设置可以有效改善网络请求超时的情况。编辑 `/etc/resolv.conf` 文件来指定可靠的DNS服务器地址[^3]。 ```bash sudo vim /etc/resolv.conf ``` 在文件中添加如下内容: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 保存并退出编辑器后重启Docker服务使更改生效。 #### 调整Docker Daemon配置 对于Docker Desktop用户来说,在某些情况下还需要调整daemon.json中的代理设置以确保能够正常访问远程仓库。打开或创建位于 `$HOME/.docker/daemon.json` 的JSON配置文件,并加入以下参数[^1]: ```json { "dns": ["8.8.8.8", "8.8.4.4"], "max-concurrent-downloads": 10, "debug": true } ``` 完成上述操作之后再次启动Docker Desktop应用即可解决问题。 #### 使用国内镜像源加速下载速度 如果仍然存在无法获取到官方库资源的问题,则建议切换至阿里云或其他服务商提供的中国区镜像站点作为默认索引位置。这可以通过同样的方式修改daemon.json实现: ```json { ... "registry-mirrors": [ "https://<your_mirror>.mirror.aliyuncs.com" ] } ``` 请替换 `<your_mirror>` 为实际可用的服务端口前缀字符串。 通过以上措施应该能较好地处理因网络延迟而导致的拉取失败现象。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值