Панель інструментів Docker - Localhost не працює


100

Тому я використовую Docker Toolbox, оскільки на моїй машині немає Hyper-V, оскільки це не Windows 10 pro. Здається, все працює нормально, але коли я намагаюся зайти в браузер, 0.0.0.0:80це завжди повертає мене: цей сайт неможливо отримати

Але коли я запускаю команду: docker container psя отримую таке:0.0.0.0:80->80/tcp означає, що ця адреса повинна працювати. Я шукав у проблемах зі stackoverflow та github. Зараз я застряг.

Мені чогось не вистачає?

Дякую, Марк

РЕДАГУВАТИ:

Використання docker-machine ip defaultповертає мене 192.168.99.100. Я запускаю це на порту 80. Я все одно отримую той самий результат, за винятком того, що адреса стає ідентифікатором контейнера:https://fd677edg12

Я біг цієї команди на ЦМД , щоб знайти мій ipv4: cmd /k ipconfig /all. Поставте результат до порту, і він поверне те саме:https://fd677edg12


1
0.0.0.0 не є фактичною адресою, це означає, що порт був прив'язаний до всіх інтерфейсів хоста (вашого комп'ютера з Windows) докера. Спробуйте localhost: 80 або будь-яку ip-адресу вашого комп’ютера: 80
fvu

@fvu Я все ще отримую "цей сайт недоступний". Я також спробував. docker-machine default ip -> 192.168.99.100Тому я помістив це на адресу: 192.168.99.100:80я все ще отримую той самий аргумент.
Марк

1
Якщо вас переспрямовують - це ваш додаток, який зламався. Якщо припустити, що докер працює на тому самому комп'ютері, ви повинні мати можливість локального
хосту

Відповіді:


179

Docker Toolbox не має такої кількості зручностей, як Docker для Windows, але ви правильно використовуєте його, оскільки ви перебуваєте в домашній версії.

У Toolbox нічого не буде localhostі буде 192.168.99.100за замовчуванням, оскільки він працює на віртуальній машині Linux у VirtualBox.

Тож якщо ви біжите docker run -p 80:80 nginx

(зверніть увагу, що мені довелося опублікувати порт для 192.168.99.100прослуховування на цьому порту)

Тоді перехід до http://192.168.99.100роботи повинен спрацювати.


Дякую за відповідь. Я виконую ваші кроки, крім доданих docker run -p 80:80 -d nginx. Я переходжу за адресою, і вона перенаправляє мене на https://dev/, знову ж каже, що веб-сайт неможливо отримати. Я також хотів перевірити, чи є у мене щось у цьому hostsфайлі (хоча я знаю, що це не localhost). Я там все прокоментував.
Марк

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

1
Інформація про бонуси: Панель інструментів Docker (використовується у Windows 7, 8, 8.1 та 10 Home) - насправді лише сценарій запуску, обгорнутий навколо docker-machinecli. Ви можете використовувати, docker-machine --helpщоб побачити, що ви можете зробити для управління віртуальною машиною VirtualBox (або створити більше).
Брет Фішер,

64

Спочатку у мене було кілька проблем з доступом до моїх програм на localhost: 8080 під час використання DockerToolBox та OracleVM VirtualBox.

У VirtualBox:

  1. Клацніть відповідну машину (можливо, ту, що позначена як "за замовчуванням")
  2. Налаштування
  3. Мережа> Адаптер 1> Додатково> Переадресація портів
  4. Натисніть "+", щоб додати нове правило
  5. Встановити порт хосту 8080та порт гостя 8080; обов’язково залиште IP-адресу хосту та IP-адресу гостя порожніми

Виконайте команду:

docker run -p 8080:8080 ${image_id}

Через налаштування CORS на віддаленому API, я повинен працювати як localhost: 8080. Так здорово, так просто, дякую!
phazei

1
Дивовижний. Скрізь кажуть, що цього не можна зробити, але ось воно.
superPhreshHackerKid

Крім того, переконайтесь, що ви не заплутуєте речі з іншими речами, які вже прослуховуються на цьому порту, або записами localhost / 127.0.0.1 у вашому файлі hosts ( C:\Windows\System32\drivers\etc\hosts) - мені довелося перевірити обидва, перш ніж це спрацювало для мене ;-)
msa

Працював як шарм!
Daggie Blanqx - Douglas Mwangi

43

Я стежив за підручником докера для Windows у https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell і застряг на кроці # 6 під час тестування nginx у веб-браузері . Здається, я зіткнувся з подібною проблемою, оскільки я також використовую Windows Home і не маю Hyper-V. Моє обхідне рішення досить просте:

  1. перевірте IP-адресу вашого докера за замовчуванням

$ docker-machine ip за замовчуванням

192.168.99.100

  1. Перейдіть до віртуальної машини Oracle, щоб налаштувати переадресацію портів. Переконайтесь, що мережевим налаштуванням є NAT, і додайте переадресацію портів. Host IP: 127.0.0.1, Гість IP: 192.168.99.100, порт все готово до 80 , як це

  2. Спробуйте ще раз у своєму браузері та запустіть http: // localhost або http://127.0.0.1 (також можна додати порт 80). Він повинен працювати.

Річ у тім, що IP-адреса nginx має бути доступною у віртуальній машині докера, тому нам потрібен цей параметр переходу до порту, щоб отримати доступ до нього безпосередньо у браузері хост-машини


2
Мені потрібен випадок, коли HOST:CONTAINERпорти відрізняються, наприклад docker run --detach --publish 8081:80 --name webserver nginx. Виявив, що в цьому випадку мені довелося перенаправляти HOSTлише порт, тобто у налаштуваннях VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, не так, 80як я передбачав раніше. Схоже, на моїй машині Windows 7 з Docker Toolbox Docker пересилає від порту контейнера 80до, 192.168.99:8081а я пересилаю від 192.168.99:8081до, localhost:8081оскільки 192.168.99:8081у веб-браузері нічого не відображається.
and1er

Ти рятівник життя, дякую, будь ласка
muwonge nicholus

13

Можна використовувати localhost замість "192.168.99.100", дотримуючись інструкцій:

Крок No 01:

docker-machine ip default

Ви побачите IP за замовчуванням

Крок No 02:

docker-machine stop default

Крок No 03:

  1. Відкрийте VirtualBox Manager (з запуску програм у вікні пошуку VirtualBox Manager )
  2. Виберіть образ Docker Machine VirtualBox (наприклад: за замовчуванням)
  3. Відкрийте Налаштування -> Мережа -> Додатково -> Переадресація портів
  4. Додайте назву програми, бажаний порт хосту та гостьовий порт i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Крок # 04: Тепер ви готові до запуску машини Docker, виконавши наступне:

docker-machine start default

Тоді просто запустіть свій контейнер Docker, і ви зможете отримати до нього доступ через localhost.

Подивіться тут для деталей.


2

Скласти карту портів, як очікується localhost замість того, щоб безпосередньо потрапити на IP-адресу докер-машини, ви можете використовувати CLI VirtualBox.

Якщо працює машина віртуальної машини-докера (тут вона називається default), додайте та видаліть такі правила:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Якщо віртуальна машина не працює або ви хочете зупинитись перед її зміною:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

Де є формат правила переадресації портів [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport> .

Зверніть увагу, що у VirtualBox ви хочете зіставити з хостом - порт карти Докер, а не внутрішні порт контейнера. Ви зіставляєте хост -> VM, а потім Docker відображає VM -> контейнер.

Перегляньте документи VirtualBox .


1

Це ще один простий спосіб уникнути введення ip 192.168.99.100. Перейдіть C:\Windows\System32\drivers\etc\hostsі додайте в кінці файлу:

192.168.99.100 docker.awesome або будь-яке ім’я, яке вам подобається.

Збережіть файл (Ви повинні мати права адміністратора, тому переконайтеся, що клацніть правою кнопкою миші на файлі та запустіть як адміністратор, щоб мати можливість зберегти його під час редагування).

Перейдіть до вибраного доменного імені, docker.awesome: 8080, у цьому випадку - і ось у вас є.


0

Після багатьох випробувань я зміг отримати цю дошку оголошень.

  1. Я використав команду docker run - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Тут 4680 - це номер порту localhost. 8080 - номер порту контейнера, порт, на якому буде прослуховуватися контейнер. Цей номер порту згадується в команді EXPOSE у файлі Docker.

  2. Потім перейдіть до веб-браузера та введіть 192.168.99.100:4680

Тут 192.168.99.100 - це IP-адреса докер-машини (використовуйте команду -> docker-machine ip)

  1. Після цього сторінка вашого браузера повинна відкритися до -

введіть тут опис зображення

Сподіваюся, це всім вам допоможе !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.