#windows #docker #ubuntu #containers
#Windows #docker #ubuntu #контейнеры
Вопрос:
Я запускаю веб-приложение (скопированное из примеров github), которое выполняется как контейнер на удаленной виртуальной машине Ubuntu. Приложение представляет собой узловое JS-приложение, использующее базу данных mysql. Я запустил приложение с помощью docker-compose в Ubuntu.
Приложение появилось какhttp://172….:3000 используя сетевой порт. IP-адрес отображается в терминале docker-compose. В системе Ubuntu, когда я выполняю curl http://172….:3000 , это дает надлежащий ответ об успешном завершении. IP-адрес — это сетевой адрес контейнера. Это не IP-адрес виртуальной машины. Брандмауэра нет.
Как получить доступ к веб-приложению с моего компьютера с Windows 7. Когда я попытался получить доступ с помощью http://VM IP-адрес: 3000, он не попадает в систему Ubuntu. Я не получаю никаких сообщений в терминале docker-compose. Кто-нибудь может здесь помочь?
Комментарии:
1. есть ли брандмауэр в Ubuntu?
2. Можете ли вы добавить описание вашего системного макета к вопросу? Какова взаимосвязь между хостом Windows, системой Ubuntu, виртуальной машиной, контейнером и 172… IP-адрес?
3. Надеюсь, теперь я объяснил лучше. В Ubuntu нет брандмауэра. В docker-compose я вижу сетевой режим, сеть. Могу ли я использовать эти свойства в docker-compose.yml.
4. Можете ли вы предоставить фрагмент раздела port в docker-compose, если возможно, проект GitHub и ответ docker ps
5. проект github: github.com/paigen11/mySqlRegistration Вы можете проверить docker-compose.yml в этом проекте github.
Ответ №1:
ports:
- "3031:3000"
аналогичная строка в вашем docker compose означает, что вы опубликовали порт 3000 вашего контейнера на порт 3031 вашей виртуальной машины Ubuntu.
теперь вы можете получить доступ к своей client
службе как http://<ubuntu-ip>:3031
, но перед этим вам необходимо разрешить доступ к порту 3031