在使用harbor做docker registry时,如果客户端是centos7.2,其docker版本为1.10.3,在docker login成功之后docker push,会概率遇到”unauthorized: authentication required”错误。

这可能是centos版本docker的bug,复现方法是docker login时指定user、passwd,但不输入email。centos自己维护了一份docker rpm。

解决办法是docker login时指定email(原因未知)。

docker login -u admin -p 123456 -e admin@ieevee.com docker.ieevee.com

这条命令会生成 ~/.docker/config.json 文件,所以手工去改这个文件也是可以的。

cat ~/.docker/config.json 
{
        "auths": {
                "docker.ieevee.com": {
                        "auth": "xxxx",
                        "email": "admin@ieevee.com"
                }
        }
}

ubuntu 16.04,docker版本为1.12.6,没有这个问题。