如何在minikube注册表中创建docker映像

时间:2020-04-20 15:21:51

标签: docker kubernetes microservices minikube

我正在尝试在本地使用kubernetes。因此,我安装了minikube。创建部署对象时,pod在minikube docker注册表中找不到映像,并且pod的显示状态为ErrImageNeverPull。为了解决该问题,我按照以下步骤操作:

  1. minikube start
  2. eval $(minikube docker-env)
  3. 我在deployment.yaml文件中将ImagePullPolicy更改为Never
  4. docker-compose build && docker-compose up -d

尽管我遵循了所有这些步骤,但未在minikube注册表中创建项目的图像。我已通过运行此命令eval $(minikube docker-env -u)进行了仔细检查,以切换回本地Docker注册表。在本地Docker注册表中创建了图像和容器。

我的问题是如何在minikube docker注册表中创建docker映像?

2 个答案:

答案 0 :(得分:1)

Docker Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。

  • 这可能是eval不起作用的原因,因为评估是针对docker二进制文件而不是docker-compose进行的。使用Dockerfile运行docker build,它应该直接注册到Minikube Image Registry。

来自Minikube文档:Comparing 5 ways to push your image into a minikiube cluster,做到这一点的最佳方法如下:

我的问题是如何在minikube docker注册表中创建docker映像?

  • 您可以运行minikube ssh,并且可以直接在Minikube VM上构建映像。 Docker环境已在此处设置:
$ minikube ssh
                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)


$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx                latest              e791337790a6        3 days ago          127MB
nginx                <none>              ed21b7a8aee9        2 weeks ago         127MB
ubuntu               latest              4e5021d210f6        4 weeks ago         64.2MB
  • 请记住,您必须使用标准的docker build将图像注册到注册表中。 docker-compose未在Minikube VM中烘焙

如果有任何疑问,请在评论中告诉我。

答案 1 :(得分:1)

我已按照以下步骤解决了该问题:

  1. 通过执行minikube start
  2. 重新启动minikube
  3. 我运行了minikube -p minikube docker-env,它返回了以下内容:

    output of command

  4. 我执行了eval $(minikube -p minikube docker-env)

  5. 然后我运行了docker-compose命令。

图像和容器是在minikube docker注册表中创建的。

说实话,我不知道为什么eval $(minikube docker-env)没做这份工作,也不知道eval $(minikube docker-env)eval $(minikube -p minikube docker-env)之间的区别。

如果您知道原因,请告诉我。