Как использовать локальные образы докеров с Minikube?

У меня есть несколько изображений докеров, с которыми я хочу использовать minikube, Я не хочу сначала загружать, а затем загружать то же изображение, а не просто использовать локальное изображение напрямую. Как мне это сделать?

Материал, который я попробовал:
1. Я попытался запустить эти команды (отдельно, удалив экземпляры minikube оба раза и начав заново)

kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never

Выход:

NAME                    READY     STATUS              RESTARTS   AGE
hdfs-2425930030-q0sdl   0/1       ContainerCreating   0          10m

Он просто застревает в каком-то состоянии, но никогда не достигает состояния готовности.


2. Я попытался создать реестр, а затем поместить в него изображения, но это тоже не сработало. Возможно, я сделал это неправильно, но я не могу найти надлежащие инструкции для выполнения этой задачи.

Пожалуйста, предоставьте инструкции по использованию локальных образов докера в локальном экземпляре kubernetes.
ОС: Ubuntu 16.04
Докер: Докер версия 1.13.1, сборка 092cba3
Кубернетес:

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:40:50Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}

Если бы кто-то мог помочь мне получить решение, которое использует docker-compose для этого, это было бы здорово. Благодарю.

Редактировать:

Изображения загружены в eval $(minikube docker-env:

REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
fluxcapacitor/jupyterhub                              latest              e5175fb26522        4 weeks ago         9.59 GB
fluxcapacitor/zeppelin                                latest              fe4bc823e57d        4 weeks ago         4.12 GB
fluxcapacitor/prediction-pmml                         latest              cae5b2d9835b        4 weeks ago         973 MB
fluxcapacitor/scheduler-airflow                       latest              95adfd56f656        4 weeks ago         8.89 GB
fluxcapacitor/loadtest                                latest              6a777ab6167c        5 weeks ago         899 MB
fluxcapacitor/hdfs                                    latest              00fa0ed0064b        6 weeks ago         1.16 GB
fluxcapacitor/sql-mysql                               latest              804137671a8c        7 weeks ago         679 MB
fluxcapacitor/metastore-1.2.1                         latest              ea7ce8c5048f        7 weeks ago         1.35 GB
fluxcapacitor/cassandra                               latest              3cb5ff117283        7 weeks ago         953 MB
fluxcapacitor/apachespark-worker-2.0.1                latest              14ee3e4e337c        7 weeks ago         3.74 GB
fluxcapacitor/apachespark-master-2.0.1                latest              fe60b42d54e5        7 weeks ago         3.72 GB
fluxcapacitor/package-java-openjdk-1.8                latest              1db08965289d        7 weeks ago         841 MB
gcr.io/google_containers/kubernetes-dashboard-amd64   v1.5.1              1180413103fd        7 weeks ago         104 MB
fluxcapacitor/stream-kafka-0.10                       latest              f67750239f4d        2 months ago        1.14 GB
fluxcapacitor/pipeline                                latest              f6afd6c5745b        2 months ago        11.2 GB
gcr.io/google-containers/kube-addon-manager           v6.1                59e1315aa5ff        3 months ago        59.4 MB
gcr.io/google_containers/kubedns-amd64                1.9                 26cf1ed9b144        3 months ago        47 MB
gcr.io/google_containers/kube-dnsmasq-amd64           1.4                 3ec65756a89b        5 months ago        5.13 MB
gcr.io/google_containers/exechealthz-amd64            1.2                 93a43bfb39bf        5 months ago        8.37 MB
gcr.io/google_containers/pause-amd64           

33 ответа

Решение

Как описано в README, вы можете повторно использовать демон Docker из Minikube с eval $(minikube docker-env),

Таким образом, чтобы использовать изображение, не загружая его, вы можете выполнить следующие действия:

  1. установить переменные среды с eval $(minikube docker-env)
  2. создать образ с помощью Docker Minukube (например, docker build -t my-image .)
  3. установите изображение в спецификации модуля как тег сборки (например, my-image)
  4. установить imagePullPolicy в Never В противном случае Kubernetes попытается загрузить изображение.

Важное примечание: вы должны бежать eval $(minikube docker-env) на каждом терминале, который вы хотите использовать, поскольку он устанавливает только переменные среды для текущего сеанса оболочки.

Что сработало для меня, основываясь на решении @svenwltr:

# Start minikube
minikube start

# Set docker env
eval $(minikube docker-env)

# Build image
docker build -t foo:0.0.1 .

# Run in minikube
kubectl run hello-foo --image=foo:0.0.1 --image-pull-policy=Never

# Check that it's running
kubectl get pods

Есть одно эссе и эффективный способ отправить ваш локальный образ Docker прямо в minikube, что сэкономит время на повторное создание образов в minikube.

minikube cache add <Image name>

Подробнее здесь

Здесь упоминаются все возможные методы загрузки изображений в minikube: https://minikube.sigs.k8s.io/docs/handbook/pushing/

Этот ответ не ограничивается миникубе!

Используйте локальный реестр:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Теперь пометьте свое изображение правильно:

docker tag ubuntu localhost:5000/ubuntu

Обратите внимание, что localhost должен быть изменен на DNS-имя компьютера, на котором запущен контейнер реестра.

Теперь поместите ваше изображение в локальный реестр:

docker push localhost:5000/ubuntu

Вы должны быть в состоянии вытащить его обратно:

docker pull localhost:5000/ubuntu

Теперь измените ваш файл yaml, чтобы использовать локальный реестр.

Подумайте о подключении тома в соответствующем месте, чтобы сохранить образы в реестре.

Добавляя к ответу @Farhad на основе этого ответа,

Это шаги для настройки локального реестра.

Настройка на локальном компьютере

Установить имя хоста на локальном компьютере: изменить /etc/hosts добавить эту строку

docker.local 127.0.0.1

Теперь запустите локальный реестр (удалите -d, чтобы запустить режим без демона):

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Теперь правильно пометьте свое изображение:

docker tag ubuntu docker.local:5000/ubuntu

Теперь поместите свой образ в локальный реестр:

docker push docker.local:5000/ubuntu

Убедитесь, что изображение отправлено:

curl -X GET http://docker.local:5000/v2/ubuntu/tags/list

Настройка в миникубе

ssh в minikube с помощью: minukube ssh

редактировать /etc/hosts добавить эту строку

docker.local <your host machine's ip>

Проверить доступ:

curl -X GET http://docker.local:5000/v2/ubuntu/tags/list

Теперь, если вы попытаетесь вытащить, вы можете получить ошибку доступа http.

Включить небезопасный доступ:

Если вы всегда планируете использовать minkube с этой локальной настройкой, создайте minikube для использования небезопасного реестра по умолчанию (не будет работать с существующим кластером).

minikube start --insecure-registry="docker.local:5000"

иначе выполните следующие шаги:

systemctl stop docker

отредактируйте файл docker serice: получите путь из systemctl status docker

это может быть:

/etc/systemd/system/docker.service.d/10-machine.conf или /usr/lib/systemd/system/docker.service

добавьте этот текст (замените 192.168.1.4 своим ip)

--insecure-registry docker.local: 5000 --insecure-registry 192.168.1.4:5000

к этой строке

ExecStart=/usr/bin/docker daemon -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 --insecure-registry 10.0.0.0/24

systemctl daemon-reload
systemctl start docker

попробуйте потянуть:

docker pull docker.local:5000/ubuntu

Теперь измените свой yaml-файл, чтобы использовать локальный реестр.

  containers:
    - name: ampl-django
      image: dockerhub/ubuntu

к

  containers:
    - name: ampl-django
      image: docker.local:5000/nymbleup

Не используйте http в продакшене, постарайтесь обеспечить безопасность.

Более новые версии minikube позволяют загружать изображение из локального экземпляра докера, запустив

       minikube image rm image <imagename>:<version>  
 minikube image load <imagename>:<version> --daemon

команда загрузки может показывать ошибку, но изображение все равно загружается в ваш экземпляр minikube

Одна вещь, которую следует помнить относительно minikube, заключается в том, что хост minikube не совпадает с вашим локальным хостом, поэтому я понял, что для использования локальных образов для тестирования с помощью minikube вы должны сначала создать свой образ докера локально или вытащить его локально а затем добавьте его, используя приведенную ниже команду, в контекст minikube, который является ничем иным, как другим экземпляром Linux.

 minikube cache add <image>:<tag>

но не забудьте установить imagePullPolicy: Never в ваших yamls развертывания kubernetes, так как это обеспечит использование добавленных локально образов вместо попыток удаленного извлечения их из реестра.

Один из подходов состоит в том, чтобы создать изображение локально, а затем выполнить:

docker save imageNameGoesHere | pv | (eval $(minikube docker-env) && docker load)

minikube docker-env может не вернуть правильную информацию под другим пользователем / sudo. Вместо этого вы можете запустить sudo -u yourUsername minikube docker-env,

Он должен вернуть что-то вроде:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/home/chris/.minikube/certs"
export DOCKER_API_VERSION="1.23"
# Run this command to configure your shell:
# eval $(minikube docker-env)

В дополнение к принятому ответу вы также можете достичь того, чего изначально хотели (создавая развертывание с использованием run команда) с помощью следующей команды:

kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 --generator=run-pod/v1 

Я нашел информацию о генераторе на форуме Kubernetes-dev:

Если вы используете kubectl run, он генерирует манифест для вас, который случается imagePullPolicy установлен в Always по умолчанию. Вы можете использовать эту команду, чтобы получить imagePullPolicy из IfNotPresent, который будет работать для minikube:

kubectl run --image=<container> --generator=run-pod/v1

Дэн Лоренц

https://groups.google.com/forum/

Если кто-то хочет вернуться в локальную среду после установки окружения minikube, используйте следующую команду.

eval $(docker-machine env -u)

Более простой метод, который отвечает на исходный вопрос "Как использовать локальные образы докеров с Minikube?", - сохранить образ в tar-файл и загрузить его в minikube:

# export the docker image to a tar file
docker save --output my-image.tar the.full.path.to/the/docker/image:the-tag
# set local environment variables so that docker commands go to the docker in minikube
eval $(minikube docker-env)
# or if on windows: @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
# import the docker image from the tar file into minikube
docker load --input my-image.tar
# cleanup - put docker back to normal
eval $(minikube docker-env -u)
# or if on windows: @FOR /f "tokens=*" %i IN ('minikube docker-env -u') DO @%i

Затем для запуска образа используется следующая команда. Обязательно укажите параметр --image-pull-policy=Never.

kubectl run my-image --image=the.full.path.to/the/docker/image:the-tag --image-pull-policy=Never --port=80

Из документов Кубернеца:

https://kubernetes.io/docs/concepts/containers/images/

Политика извлечения по умолчанию - IfNotPresent, которая заставляет Kubelet пропускать вытягивание изображения, если оно уже существует. Если вы хотите всегда принудительно тянуть, вы можете выполнить одно из следующих действий:

  • установите для imagePullPolicy контейнера значение Always;
  • использовать: последний как тег для изображения для использования;
  • включить контроллер доступа AlwaysPullImages.

Или читайте по-другому: использование тега: latest заставляет изображения всегда извлекаться. Если вы используете eval $(minikube docker-env) как уже упоминалось выше, либо не используйте тег, либо присвойте тег локальному изображению, чтобы Kubernetes не пытался принудительно его вытянуть.

Одна из идей - сохранить образ докера локально, а затем загрузить его в minikube следующим образом:

Скажем, например, у вас уже есть образ puckel / docker-airflow.

  1. Сохраните это изображение на локальный диск -

    docker save puckel/docker-airflow > puckel_docker_airflow.tar

  2. Теперь войдите в minikube docker env -

    eval $(minikube docker-env)

  3. Загрузите это локально сохраненное изображение -

    docker load < puckel_docker_airflow.tar

Это так просто и работает как шарм.

Для пользователей Windows, как я это делаю.

Я использую рабочий стол Docker для размещения своего образа MiniKube и использую PowerShell в качестве консоли.

Сначала я создаю свой кластер MiniKube:

      minikube start --bootstrapper=kubeadm --vm-driver=docker --profile "cluster1"

Например, допустим, у меня естьDockerfileсодержит:

      FROM nginx

2 шага: создайте образ и загрузите его в миникуб

      docker build -t mynginximage .
minikube image load mynginximage

Или 1 шаг: сборка прямо в MiniKube

      minikube image build -t mynginximage .

Чтобы запустить мой образ в MiniKube

      kubectl run myweb --image=mynginximage --image-pull-policy=Never

или черезmynginxpod.yamlфайл:

      apiVersion: v1
kind: Pod
metadata:
  name: myweb
spec:
  containers:
    - name: myweb
      image: mynginximage
      imagePullPolicy: Never
      ports:
        - containerPort: 80

Иkubectl apply -f .\mynginxpod.yaml

Теперь, чтобы проверить это, запустите:

      kubectl get pods myweb
NAME    READY   STATUS    RESTARTS   AGE
myweb   1/1     Running   0          25s

Чтобы получить к нему доступ:

      kubectl exec --stdin --tty myweb -- /bin/bash

Чтобы разоблачить его:

      kubectl port-forward nginx 3333:80
minikube addons enable registry -p minikube
docker tag ubuntu $(minikube ip -p minikube):5000/ubuntu
docker push $(minikube ip -p minikube):5000/ubuntu

ИЛИ

minikube addons enable registry
docker tag ubuntu $(minikube ip):5000/ubuntu
docker push $(minikube ip):5000/ubuntu

Сказанного выше достаточно для целей разработки. Я делаю это на Archlinux.

Теперь есть надстройка Minikube Registry, это, наверное, самый простой способ. Вот как его использовать: https://minikube.sigs.k8s.io/docs/tasks/registry/insecure/

Обратите внимание, что у меня были проблемы с DNS, возможно, это ошибка.

Есть два простых способа загрузить локальные изображения в Minikube.

Всегда устанавливайте imagePullPolicy: Never в развертывании yaml.

Например:

      spec:
  containers:
    - name: myapp
      image: pz/demo
      imagePullPolicy: Never
      ports:
        - containerPort: 8080

К счастью, есть две простые команды, которые помогут в этом.

  1. Первая — это команда загрузки изображения. Вы можете загрузить образ Docker со своего локального компьютера в кластер Minikube с помощью следующей команды.

Общий

minikube image load <IMAGE_NAME>

Пример

minikube image load pz/demo

После загрузки образа в кластер Minikube вы можете перезапустить свои поды вышеописанного развертывания и заметить, что они запускаются нормально.

  1. При использовании предыдущего способа вы всегда создаете образ Docker на своем локальном компьютере, а затем перемещаете его в контейнер Minikube, что опять же занимает немного времени, хотя и не так много.

Используя команду сборки образа Minikube, мы можем создать образ непосредственно внутри контейнера Minikube.

Общий

minikube image build -t <IMAGE_NAME> <PATH_TO_DOCKERFILE>

Пример

minikube image build -t pz/demo /New APP/Dockerfile

С помощью команды сборки образа minikube образ мгновенно становится доступным для Minikkube, и его не нужно явно загружать на втором этапе с помощью команды загрузки образа minikube.

Используя один из обоих методов, чтобы получить образ Docker нашего приложения в Minikube и перезапустить модули, мы можем перепроверить журналы развертывания:

Кроме того, чтобы убедиться, что все работает должным образом, мы можем перенаправить наш локальный порт 8080 на 8080 развертывания, используя:

kubectl port-forward deployment/myapp 8080:8080

Перепроверив браузер, мы видим, что локально собранное приложение отлично работает в кластере Minikube.

Ссылка: https://levelup.gitconnected.com/two-easy-ways-to-use-local-docker-images-in-minikube-cd4dcb1a5379

Вы должны знать, что докер на вашей локальной машине отделен от докера в вашем кластере .

Таким образом, вы должны загрузить/скопировать образ Docker с вашего локального компьютера в кластер minikube :

      minikube image load <IMAGE_NAME>

или альтернативно при работе сminikube, вы можете создавать образы прямо внутри него:

      #instead of:
docker image build -t <IMAGE_NAME> .
#do:
minikube image build -t <IMAGE_NAME> .

Чтобы добавить к предыдущим ответам, если у вас есть tarball-изображение, вы можете просто загрузить его в свой локальный докер-набор изображений docker image load -i /path/image.tar. Пожалуйста, не забудьте запустить его после eval $(minikube docker-env), поскольку minikube не делится изображениями с локально установленным механизмом докера.

Для minikube на Docker:

Вариант 1. Использование реестра minikube

  1. Проверьте свои порты minikubedocker ps

Вы увидите что-то вроде: 127.0.0.1:32769->5000/tcpЭто означает, что ваш реестр minikube находится на порту 32769 для внешнего использования, а внутри - на порту 5000.

  1. Создайте свой образ докера, пометив его:docker build -t 127.0.0.1:32769/hello .

  2. Перенесите образ в реестр minikube:docker push 127.0.0.1:32769/hello

  3. Проверьте, есть ли оно:curl http://localhost:32769/v2/_catalog

  4. Создайте развертывание с использованием внутреннего порта:kubectl create deployment hello --image=127.0.0.1:5000/hello

Ваше изображение сейчас находится в контейнере minikube, чтобы увидеть его, напишите:

eval $(minikube -p <PROFILE> docker-env)
docker images

предостережение: если используется только один профиль с именем "minikube", то раздел "-p " является избыточным, но если используется больше, не забывайте об этом; Лично я стандартную (миникубе) удаляю, чтобы не ошибаться.

Вариант 2: не использовать реестр

  1. Переключиться на контейнер minikube Docker:eval $(minikube -p <PROFILE> docker-env)
  2. Создайте свой образ:docker build -t hello .
  3. Создайте развертывание:kubectl create deployment hello --image=hello

В конце измените развертывание ImagePullPolicy с Always на IfNotPresent:

kubectl edit deployment hello

В дополнение к minikube image load <image name>, ознакомьтесь с последней версией Minikube (ноябрь 2021 года на момент написания).

v1.24.0

Добавлять --no-kubernetesфлаг для запуска minikube без Kubernetes
См. PR 12848, для

Это дает вам:

      mk start --no-kubernetes
minikube v1.24.0-beta.0 on Darwin 11.6 (arm64)
Automatically selected the docker driver
Starting minikube without Kubernetes minikube in cluster minikube
Pulling base image ...
Creating docker container (CPUs=2, Memory=1988MB) ...
Done! minikube is ready without Kubernetes!

Что попробовать без Kubernetes

  • " minikube ssh"по SSH в узел миникуба.
  • " minikube docker-env"создавать изображения, указывая на докер внутри minikube
  • " minikube image"создавать образы без докера

Другие ответы предполагают, что вы используете minikube с виртуальной машиной, поэтому ваши локальные образы недоступны из виртуальной машины minikube.

Если вы используете minikube с --vm-driver=none, вы можете легко повторно использовать локальные изображения, установив image_pull_policy никогда:

kubectl run hello-foo --image=foo --image-pull-policy=Never

или установка imagePullPolicy поле для котейнеров в соответствующих .yaml проявляет.

построение предыдущего ответа для использования eval $(minikube docker-env)чтобы загрузить среду докера minikube, для более легкого переключения добавьте следующую функцию в rc-файл оболочки:

      dockube() {
  if [[ $1 = 'which' ]]; then
    if [[ $MINIKUBE_ACTIVE_DOCKERD = 'minikube' ]]; then
      echo $MINIKUBE_ACTIVE_DOCKERD
    else
      echo 'system'
    fi
    return
  fi

  if [[ $MINIKUBE_ACTIVE_DOCKERD = 'minikube' ]]; then
    eval $(minikube docker-env -u)
    echo "now using system docker"
  else
    eval $(minikube -p minikube docker-env)
    echo "now using minikube docker"
  fi
}

dockubeбез аргумента будет переключаться между системой и средой докера minikube, и dockube whichвернет, какой из них используется.

Шаги для запуска локальных образов докеров в кубернетах
1. eval $ (minikube -p minikube docker-env)
2. в файле артефакта, в разделе спецификации -> контейнеры
добавить imagePullPolicy: IfNotPresent
или imagePullPolicy: Never

apiVersion: "v1"
kind: Pod
metadata:
    name: web
    labels:
        name: web
        app: demo
spec:
    containers:
        - name: web
          image: web:latest
          imagePullPolicy: IfNotPresent
          ports:
              - containerPort: 5000
                name: http
                protocol: TCP


3. затем запустите kubectl create -f <filename>

  1. настроить minikube docker-env
  2. снова создайте тот же образ докера (используя minikube docker-env)
  3. измените imagePullPolicy на Never в вашем развертывании

На самом деле, что здесь происходит, ваш Minikube не может распознать ваш демон docker, поскольку это независимый сервис. Вы должны сначала настроить среду minikube-docker, используя команду ниже, чтобы проверить

 "eval $(minikube docker-env)"

Если вы запустите команду ниже, она покажет, где ваш мини-куб ищет докер.

~$ minikube docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.37.192:2376"
export DOCKER_CERT_PATH="/home/ubuntu/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD="minikube"

**# To point your shell to minikube's docker-daemon, run:**
# eval $(minikube -p minikube docker-env)

Вам придется снова создавать образы после установки minikube docker-env, иначе это не удастся.

Что , если бы вы могли просто запустить k8s в виртуальной машине докера? для этого есть встроенная поддержка с более поздними версиями рабочего стола Docker... вам просто нужно включить эту поддержку.

https://www.docker.com/blog/kubernetes-is-now-available-in-docker-desktop-stable-channel/https://www.docker.com/blog/docker-windows-desktop-now-kubernetes/

как я это узнал:

пока вы читаете документацию по Helm, они дают вам краткое руководство по установке minikube. этот учебник устанавливает minikube в виртуальную машину, отличную от докера.

поэтому, когда пришло время установить мои диаграммы управления, я не смог заставить helm / k8s извлекать образы, которые я создал с помощью докера. вот как я пришел к этому вопросу.

так что... если вы можете жить с любой версией k8s, поставляемой с рабочим столом докера, и вы можете жить с ней, работающей в любом докере vm, тогда, возможно, это решение будет немного проще, чем некоторые другие.

отказ от ответственности: не уверен, как переключение между контейнерами Windows / Linux повлияет на что-либо.

Укороченная версия

Загрузите в репозиторий Minikube:

      minikube image load imageName

Подтвердите загрузку:

      minikube image ls

Альтернативное решение:

Допустим, у меня уже естьNginxизображение локально.

      docker save -o nginx.tar nginx:1.19.0-alpine
minikube ssh
docker load -i /path/to/nginx.tar

Теперь вы можете создать развертывание Kubernetes, используя локальный образ Docker.

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.0-alpine
        imagePullPolicy: IfNotPresent  # Note: you can also user 'Never'
        ports:
        - containerPort: 80

Окончательно:

      kubectl apply -f my-deployment.yml

Я нашел этот метод в ClickHouse Operator Build From Sources, и он помогает мне спасти мне жизнь!

docker save altinity/clickhouse-operator | (eval $(minikube docker-env) && 
docker load)

На миникубе 1.20, minikube cache add imagename:tag устарел.

Вместо этого используйте minikube image load imagename:tag

Другие вопросы по тегам