Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:无法提取图像(收到长度为20527的超大记录_Docker_Kubernetes_Boot2docker_Docker Machine - Fatal编程技术网

Docker:无法提取图像(收到长度为20527的超大记录

Docker:无法提取图像(收到长度为20527的超大记录,docker,kubernetes,boot2docker,docker-machine,Docker,Kubernetes,Boot2docker,Docker Machine,我在尝试使用Kubernetes(一个容器管理平台)从本地注册表中提取docker映像时遇到问题 目前的情况是,我的docker VM中存储了docker映像,运行地址为192.168.99.103。我正在Windows机器上运行docker 我在本地创建了一个名为“tomcat测试:dockerfile”的图像 接下来,我使用以下命令创建并运行本地注册表: docker run -d -p 5000:5000 --restart always --name registry registry:

我在尝试使用Kubernetes(一个容器管理平台)从本地注册表中提取docker映像时遇到问题

目前的情况是,我的docker VM中存储了docker映像,运行地址为192.168.99.103。我正在Windows机器上运行docker

我在本地创建了一个名为“tomcat测试:dockerfile”的图像

接下来,我使用以下命令创建并运行本地注册表:

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker push localhost:5000/tomcat-test:latest
docker-machine create -d virtualbox --engine-insecure-registry localhost:5000 dev2
docker pull <repo_name>
此时,我对图像进行如下标记:

docker tag tomcat-test:dockerfile localhost:5000/tomcat-test:latest
最后,我使用以下命令推送到本地注册表:

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker push localhost:5000/tomcat-test:latest
docker-machine create -d virtualbox --engine-insecure-registry localhost:5000 dev2
docker pull <repo_name>
这已成功推送到注册表

现在我想使用Kubernetes从本地docker注册表中提取图像。为此,我必须提供图像在docker注册表中的位置的URL:

我假设URL是:

192.168.99.103:5000/tomcat-test:latest
但是,我得到以下错误:

Failed to pull image "192.168.99.103:5000/tomcat-test": rpc error: code = 2 desc = Error response from daemon: Get https://192.168.99.103:5000/v1/_ping: tls: oversized record received with length 20527
我怀疑这是Docker发出的错误消息

现在我已经在网上进行了研究,有人建议创建一台新的docker机器,您可以在其中指定不安全注册表的IP。因此,我使用了以下命令:

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker push localhost:5000/tomcat-test:latest
docker-machine create -d virtualbox --engine-insecure-registry localhost:5000 dev2
docker pull <repo_name>
然而,在遵循上述步骤之后,这仍然不起作用,我得到了相同的错误

有没有人找到了这个问题的解决方案?还有,我应该做些什么来防止这个问题出现

任何帮助都将不胜感激


谢谢。

找到了解决此问题的方法:

如果您使用的是minikube,则可以使用“ssh”命令进入minikube虚拟机:

minikube ssh
这将打开外壳。在这里,您可以通过输入以下命令从docker hub中提取docker图像:

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker push localhost:5000/tomcat-test:latest
docker-machine create -d virtualbox --engine-insecure-registry localhost:5000 dev2
docker pull <repo_name>
这应该会成功运行


请注意,为了使pod在kubernetes中成功运行,您必须确保Docker容器具有一个入口点,该入口点将无限期运行应用程序。如果没有,则您可能会在pod上看到“CrashBackLoop”状态,而不是“running”状态。

找到了解决此问题的方法:

如果您使用的是minikube,则可以使用“ssh”命令进入minikube虚拟机:

minikube ssh
这将打开外壳。在这里,您可以通过输入以下命令从docker hub中提取docker图像:

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker push localhost:5000/tomcat-test:latest
docker-machine create -d virtualbox --engine-insecure-registry localhost:5000 dev2
docker pull <repo_name>
这应该会成功运行

请注意,为了使pod在kubernetes中成功运行,您必须确保Docker容器具有一个入口点,该入口点将无限期运行应用程序。如果没有,则您可能会在pod上看到“CrashBackLoop”状态,而不是“running”状态