Использовать локальный образ докера с миникубом - PullRequest
0 голосов
/ 05 октября 2018

Я следовал по этому URL: Как использовать локальные образы докеров с Minikube? Я не смог добавить комментарий, поэтому подумал поставить вопрос здесь:

На моем ноутбуке,У меня ОС Linux Mint.Подробности, как показано ниже:

Mint version 19, 
Code name : Tara,
PackageBase : Ubuntu Bionic
Cinnamon (64-bit)

Согласно одному из ответов по вышеуказанной ссылке:

  1. Я запустил миникуб и проверил модули и развертывания
xxxxxxxxx:~$ pwd
/home/sj

xxxxxxxxxx:~$ minikube start
xxxxxxxxxx:~$ kubectl get pods
xxxxxxxxxx:~$ kubectl get deployments

Я запустил образы командной строки

xxxxxxxxx:~$ docker images

REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
<username>/spring-docker-01   latest              e10f88e1308d        6 days ago          640MB
openjdk                           8                   81f83aac57d6        4 weeks ago         624MB
mysql                             5.7                 563a026a1511        4 weeks ago         372MB
Я запустил следующую команду:

eval $ (minikube docker-env)

Теперь, когда я проверяю образы докеров, похоже, как описывает README , он повторно использует демон Docker из Minikube с eval $ (minikube docker-env).

xxxxxxxxxxxxx: ~ $ docker images

REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
nginx                                      alpine              33c5c6e11024        9 days ago          17.7MB
k8s.gcr.io/coredns                         1.2.2               367cdc8433a4        5 weeks ago         39.2MB
k8s.gcr.io/kubernetes-dashboard-amd64      v1.10.0             0dab2435c100        5 weeks ago         122MB
k8s.gcr.io/kube-proxy-amd64                v1.10.0             bfc21aadc7d3        6 months ago        97MB
k8s.gcr.io/kube-controller-manager-amd64   v1.10.0             ad86dbed1555        6 months ago        148MB
k8s.gcr.io/kube-apiserver-amd64            v1.10.0             af20925d51a3        6 months ago        225MB
k8s.gcr.io/kube-scheduler-amd64            v1.10.0             704ba848e69a        6 months ago        50.4MB
k8s.gcr.io/etcd-amd64                      3.1.12              52920ad46f5b        6 months ago        193MB
k8s.gcr.io/kube-addon-manager              v8.6                9c16409588eb        7 months ago        78.4MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64     1.14.8              c2ce1ffb51ed        9 months ago        41MB
k8s.gcr.io/k8s-dns-sidecar-amd64           1.14.8              6f7f2dc7fab5        9 months ago        42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64          1.14.8              80cc5ea4b547        9 months ago        50.5MB
k8s.gcr.io/pause-amd64                     3.1                 da86e6ba6ca1        9 months ago        742kB
gcr.io/k8s-minikube/storage-provisioner    v1.8.1              4689081edb10        11 months ago       80.8MB
k8s.gcr.io/echoserver                      1.4                 a90209bb39e3        2 years ago         140MB

Примечание: если замечено, команда docker images вытянула разные изображения до и после шага 2.

Поскольку я не увидел изображение, которое хотел поставить на миникуб, я вытащил его из док-станции.
xxxxxxxxxxxxx:~$ docker pull <username>/spring-docker-01
Using default tag: latest
latest: Pulling from <username>/spring-docker-01
05d1a5232b46: Pull complete 
5cee356eda6b: Pull complete 
89d3385f0fd3: Pull complete 
80ae6b477848: Pull complete 
40624ba8b77e: Pull complete 
8081dc39373d: Pull complete 
8a4b3841871b: Pull complete 
b919b8fd1620: Pull complete 
2760538fe600: Pull complete 
48e4bd518143: Pull complete 
Digest: sha256:277e8f7cfffdfe782df86eb0cd0663823efc3f17bb5d4c164a149e6a59865e11
Status: Downloaded newer image for <username>/spring-docker-01:latest
Проверено, могу ли я увидеть это изображение с помощью команды "docker images".
xxxxxxxxxxxxx:~$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
<username>/spring-docker-01            latest              e10f88e1308d        6 days ago          640MB
nginx                                      alpine              33c5c6e11024        10 days ago         17.7MB
Затем я попытался скомпоновать образ, как указано в шаге ссылочной ссылки.
xxxxxxxxxx:~$ docker build -t <username>/spring-docker-01 .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/sj/Dockerfile: no such file or directory

Поскольку ошибка указывает на то, что dockerfile не существует в расположенииЯ не уверен, где именно я могу увидеть докер-файл для изображения, которое я извлек из докера.

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

Ниже приведены шаги, которые я буду выполнять после устранения вышеупомянутой проблемы.

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

# Check that it's running
kubectl get pods

UPDATE-1

В вышеуказанных шагах есть ошибка.Шаг 6 не нужен.Изображение уже извлечено из док-концентратора, поэтому команда docker build не требуется.

После этого я продолжил и следовал инструкциям, указанным @aurelius в ответ.

xxxxxxxxx:~$ kubectl run sdk-02 --image=<username>/spring-docker-01:latest --image-pull-policy=Never
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/sdk-02 created

Проверенные модули и развертывания

xxxxxxxxx:~$ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
sdk-02-b6db97984-2znlt       1/1     Running   0          27s
xxxxxxxxx:~$ kubectl get deployments
NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
sdk-02      1         1         1            1           35s

Затем было показано развертывание на порту 8084, когда я использовал другие порты, например с 8080 по 8083

xxxxxxxxx:~$ kubectl expose deployment sdk-02 --type=NodePort --port=8084
service/sdk-02 exposed

Затем было проверено, запущена ли служба, проверено, если нет проблемна kubernetes dashboard, а затем проверил URL

xxxxxxxxx:~$ kubectl get services
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP          7h
sdk-02       NodePort       10.100.125.120   <none>        8084:30362/TCP   13s

xxxxxxxxx:~$ minikube service sdk-02 --url
http://192.168.99.101:30362

Когда я попытался открыть URL: http://192.168.99.101:30362 в браузере, я получил сообщение:

This site can’t be reached
192.168.99.101 refused to connect.
Search Google for 192 168 101 30362
ERR_CONNECTION_REFUSED

Так чтовопрос: есть ли проблема с выполненными шагами?


UPDATE-2

Проблема была с шагом ниже:

xxxxxxxxx:~$ kubectl expose deployment sdk-02 --type=NodePort --port=8084
    service/sdk-02 exposed

После проверки Dockerfileмоего изображения: <username>/spring-docker-01:latest Я выставлял на 8083 что-то вроде EXPOSE 8083 Может быть, это вызывало проблему.Поэтому я пошел дальше и изменил команду expose:

xxxxxxxxx:~$ kubectl expose deployment sdk-02 --type=NodePort --port=8083
service/sdk-02 exposed

И затем она начала работать.

Если у кого-то есть что добавить к этому, пожалуйста, не стесняйтесь.

Однако я до сих пор не уверен, где именно я могу увидеть докер-файл для изображения, которое я извлек из докера.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

docker build не знает, что вы подразумеваете под командой , потому что флаг -t требует определенного формата:

- тег, -t Имя и, необязательно,тег в формате ' name: tag '

xxxxxxxxxx:~/Downloads$ docker build -t shivnilesh1109/spring-docker-01 .

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

docker build -t shivnilesh1109/spring-docker-01:v1(1) .(2)

(1) желаемое имя вашего контейнера: tag (2) каталог, в котором находится ваш dockerfile.

После того, как вы приступите к развертыванию мини-куба, достаточно будет просто выполнить: kubectl run *desired name of deployment/pod* --image=*name of the container with tag* --image-pull-policy=Never

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

0 голосов
/ 08 октября 2018

Для вас вопрос ОБНОВЛЕНИЕ-2, также чтобы помочь вам понять порт, выставленный в Dockerfile и в команде kubectl expose.

Dockerfile:

Инструкция EXPOSE фактически не публикует порт.Он функционирует как тип документации между человеком, который создает образ, и человеком, который запускает контейнер, о том, какие порты предназначены для публикации.

Подробнее см. EXPOSE .

Kubectl предоставляет:

- порт : порт, на котором должна обслуживаться служба.Скопировано из ресурса, если он не указан

- target-port : Имя или номер порта в контейнере, на который служба должна направлять трафик.Необязательно.

Подробнее см. kubectl expose .

Поэтому я думаю, что вы должны добавить параметры --target-port с портом, который вы указали вDockerfile.И тогда сопоставление портов будет правильным.

0 голосов
/ 05 октября 2018

Вы можете просто создать Dockerfile с таким содержимым:

FROM shivnilesh1109/spring-docker-01

Затем запустите:

docker build -t my-spring-docker-01 .
...