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

How to create docker images inside minikube registry

我正在尝试在本地使用 kubernetes。因此我安装了 minikube。当我创建部署对象时,pods 无法在 minikube docker 注册表中找到图像并且 pods' 显示状态为 ErrImageNeverPull。为了解决这个问题,我遵循了以下步骤:

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

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

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

Docker Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

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

来自 Minikube 文档:Comparing 5 ways to push your image into a minikiube cluster,最好的方法如下所述:

My question is how can I create docker images within minikube docker registry?

  • 您可以 运行 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. 通过执行 minikube start
  2. 重新启动了 minikube
  3. I 运行 minikube -p minikube docker-env 返回如下:

  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) 之间的区别。

如果你知道原因请告诉我。