как вытащить локально построенное docker изображение на windows 10? - PullRequest
0 голосов
/ 24 февраля 2020

Моя ОС - windows 10 pro, и я развиваюсь с пружинной загрузкой. Сначала я создаю docker образ с указанным ниже Dockerfile.

FROM openjdk:11-jdk
ADD target/Spring-Blog-Jpa-0.0.1-SNAPSHOT.jar blog-app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dfile.encoding=UTF8","-jar","blog-app.jar"]

Образ docker успешно создается с помощью команды docker.

> docker image build -t blog-app:latest .

И я вытягиваю mysql : последнее изображение из docker хранилища. И mysql извлечение также успешно.

> docker image pull mysql:latest .

Я пытаюсь сгенерировать капсулу kubernetes с этими docker изображениями. В случае mysql: последнее изображение, модуль mysql генерируется без ошибок. Но при генерации модуля блога-приложения блог-приложение: последнее изображение не может быть извлечено, и выдается сообщение об ошибке. Ниже приведен файл конфигурации yaml.

apiVersion: apps/v1
kind: Pod
metadata:
  name: blog-system
spec:
  containers:
  - name: blog-app
    image: blog-app:latest
    args: ["-t", "-i"]

Я понятия не имею, почему локально созданное изображение не может быть извлечено при создании модуля. Есть ли какой-нибудь процесс в pu sh локальном docker хранилище? Как локально построенные docker изображения могут быть извлечены на Kuberetes?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

Вы можете повторно использовать демон Docker из Minikube. Вот команды на Powershell.

PS C: \ minikube> minikube docker -env

PS C: \ minikube> minikube docker -env | Invoke-Expression

docker image build -t blog-app: последняя

Установите изображение в модуле c, как тег сборки

Установите imagePullPolicy Никогда, иначе Kubernetes попытается загрузить изображение.


apiVersion: apps/v1
kind: Pod
metadata:
  name: blog-system
spec:
  containers:
  - name: blog-app
    image: blog-app:latest
    imagePullPolicy: Never
    args: ["-t", "-i"]

Также проверьте это руководство

1 голос
/ 24 февраля 2020

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

Когда вы docker [push|pull] ... взаимодействуете с (удаленный) контейнерный реестр. По умолчанию (если вы его не указали) вы взаимодействуете с DockerHub и можете предположить, что к изображениям (если не указано иное) добавлен префикс DockerHub https://docker.io. Если вы используете, например, Реестр контейнеров Google, вы будете чаще использовать префиксы хостов, например https://gcr.io.

Когда вы создаете контейнер на своем хосте, пока вы docker push ... не создадите изображение, оно не появится в реестр.

Когда вы ссылаетесь на изображение в спецификации | конфигурации Kubernetes, Kubernetes ожидает получить изображение из реестра. В вашем случае, blob-app отсутствует в реестре, и это приводит к сбою.

Вы можете запустить локальный реестр для решения этой проблемы. Один из способов сделать это - использовать Minikube для ответа @ arghya-sadhu. Но вы также можете запустить Docker образ собственной реализации реестра Docker его спецификации spe c, см. registry .

Или вы можете pu sh ваших изображений в общедоступный реестр, например DockerHub , Реестр контейнеров Google , Quay , а затем сослаться на изображение из реестра, как вы сделали с mysql. DockerHub имеет распространенный бесплатный уровень, который разрешает как публичные c, так и (ограниченное количество) частные репозитории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...