Невозможно подключиться к работающим docker контейнерам (minikube docker daemon) - PullRequest
0 голосов
/ 30 января 2020

Когда я запускаю свой контейнер docker, используя Docker Рабочий стол для Windows, я могу подключиться к нему, используя

docker run -p 5051:5000 my_app

http://0.0.0.0:5051

Однако, когда я открываю другой терминал и делаю это

minikube docker-env | Invoke-Expression

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

Я не могу подключиться к запущенному экземпляру.

Должен ли я запускать и тестировать контейнеры, используя Docker Desktop, а затем использовать minikube для хранения только изображений (для Kubernetes)? Или вы можете запустить их и проверить их через миникубе?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Это потому, что при второй попытке контейнер работает не на хосте, а на виртуальной машине minikube. Вы сможете получить к нему доступ с помощью IP-адреса виртуальной машины minikube.
Чтобы получить ip мини-куба, выполните команду minikube ip

Почему?

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

0 голосов
/ 30 января 2020

Я спросил вас, есть ли какие-либо конкретные c причины для использования Docker Desktop и Minikube вместе на одной машине, поскольку это два конкурентных решения, которые в основном позволяют вам для выполнения похожих задач и достижения тех же целей.

В этой статье подробно объясняются различия между этими двумя инструментами.

Docker -for- windows использует Гипервизор типа 1, такой как Hyper-V, который лучше по сравнению с гипервизорами типа 2, такими как VirtualBox, в то время как Minikube поддерживает оба гипервизора. К сожалению, есть несколько ограничений, в которых вы используете технологию, так как вы не можете одновременно запускать гипервизоры типа 1 или типа 2 на своей машине

Если вы используете Docker Рабочий стол и Minikube в то же время я предполагаю, что вы используете гипервизор типа 1, такой как упомянутый Hyper-V, но имейте в виду, что даже если они используют один и тот же гипервизор, Оба инструмента создают свои собственные экземпляры виртуальной машины. По сути, вы не должны использовать эти два инструмента вместе, ожидая, что они будут работать как своего рода гибрид, который позволит вам управлять средой с одним контейнером.

Сначала проверьте, какой именно гипервизор вы используете. Если вы используете Hyper-V, простая команда Get-VM в Powershell (подробнее в этой статье ) должна сообщить вам, что у вас есть.

@ mario нет, я не знал, что у minikube был демон docker до недавнего времени, поэтому у меня оба

Да, Minikube имеет встроенную среду docker (на самом деле он все настраивает, но да, он также устанавливает время выполнения контейнера), так что в основном вам не нужно устанавливать docker дополнительно, и, как @ Mar c ABOUCHACRA уже предложил в своем ответе, Minikube запускает всю среду (один узел k8s кластер с docker runtime ) на отдельной виртуальной машине. Linux версия имеет опцию --vm-driver=none, которая позволяет вам использовать ваш хост контейнер выполнения и настроить компоненты k8s на нем, но это не так с Windows версией - здесь вы можете только используйте один из двух поддерживаемых в настоящее время гипервизоров: Hyper-V или VirtualBox ( ref ).

Я бы не сказал, что Docker Destkop запускает все на ваш хост. Он также использует гипервизор типа 1 для запуска среды выполнения контейнера. Пожалуйста, проверьте команду Get-VM на вашем компьютере, и должно быть ясно, какие виртуальные машины у вас есть и какие инструменты были созданы.

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