问题是您的想法可以
127.0.0.1在任何地方使用。错了
因此,如果您的计算机IP是192.168.0.101。然后下面的作品
1- docker build -t 127.0.0.1:5000/eliza/console:0.0.1 .2- docker run -d -p 5000:5000 --name registry registry:23- docker tag a3703d02a199 127.0.0.1:5000/eliza/console:0.0.14- docker push 127.0.0.1:5000/eliza/console:0.0.15- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list
因为docker
run将注册表映射到127.0.0.1:5000和192.168.0.101:5000。现在,只有在您的计算机上,这才
127.0.0.1起作用。现在,当您使用
3- minikube ssh
您进入minikube机器,里面没有运行在127.0.0.1:5000上的注册表。这样的错误。使用机器的机器IP在该机器内部无法访问注册表。
我通常解决此问题的方法是在本地和其他VM内使用主机名。
因此,在您的计算机上创建一个条目
/etc/hosts
docker.local 127.0.0.1
并将命令更改为
1- docker build -t docker.local:5000/eliza/console:0.0.1 .2- docker run -d -p 5000:5000 --name registry registry:23- docker tag a3703d02a199 docker.local:5000/eliza/console:0.0.14- docker push docker.local:5000/eliza/console:0.0.15- curl -X GET http://docker.local:5000/v2/eliza/console/tags/list
然后当你使用
minikube ssh,使一个条目
docker.local中
/etc/hosts
docker.local 192.168.0.101
然后
curl -X GET http://docker.local:5000/v2/eliza/console/tags/list
编辑1
对于TLS问题,您需要在minikube中停止docker服务
systemctl stop docker
然后编辑
/etc/systemd/system/docker.service.d/10-machine.conf并更改
ExecStart = / usr / bin / docker守护程序-H tcp://0.0.0.0:2376 -H
unix:///var/run/docker.sock –tlsverify –tlscacert /etc/docker/ca.pem-
tlscert /etc/docker/server.pem –tlskey /etc/docker/server-key.pem –label
provider = virtualbox-不安全的注册表10.0.0.0/24
至
ExecStart = / usr / bin / docker守护程序-H tcp://0.0.0.0:2376 -H
unix:///var/run/docker.sock –tlsverify –tlscacert /etc/docker/ca.pem-
tlscert /etc/docker/server.pem –tlskey /etc/docker/server-key.pem –label
provider = virtualbox-
不安全注册10.0.0.0/24-不安全注册docker.local:5000-不安全的注册表192.168.1.4:5000
然后重新加载守护程序并启动docker服务
systemctl daemon-reloadsystemctl start docker
之后尝试拉
docker pull docker.local:5000/eliza/console:0.0.1
命令应该起作用



