Как получить доступ к docker изображениям в сети? - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в docker, и я пытаюсь запустить одно изображение, к которому я хотел бы получить доступ на моем локальном хосте. Это порядок, который я использую.

1.docker-machine start default (starting vm)
2.docker-machine env
3.(coping the @for command which has displayed and paste to my terminal)
4.docker run -d -p 127.0.0.1:8000:80 image_id
 it generates the long string, container I guess
5.docker container run image_id - this says that "Application startup complete."

После этого я хочу получить доступ к этому в своем браузере, используя вышеуказанный IP. Страница не может быть отображена. Что я делаю неправильно ? Я windows пользователь

и это сообщение терминала после выполнения последней команды:

[2020-04-06 19:50:15 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-04-06 19:50:15 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
[2020-04-06 19:50:15 +0000] [1] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-04-06 19:50:15 +0000] [7] [INFO] Booting worker with pid: 7
[2020-04-06 19:50:15 +0000] [7] [INFO] Started server process [7]
[2020-04-06 19:50:15 +0000] [7] [INFO] Waiting for application startup.
[2020-04-06 19:50:15 +0000] [7] [INFO] Application startup complete.

Ответы [ 3 ]

1 голос
/ 06 апреля 2020

Поскольку вы использовали docker-machine, посмотрите на вывод docker-machine env, чтобы получить IP-адрес виртуальной машины docker. Затем подключитесь к этому IP-адресу на опубликованном порту. Обычно это будет порт 8000 из вашего примера, однако вы привязаны к интерфейсу обратной связи, который не доступен извне при запуске:

docker run -d -p 127.0.0.1:8000:80 image_id

Так что найдите этот контейнер (docker container ls), остановитесь его (docker container stop на идентификаторе или имени контейнера) и начните новый с:

docker run -d -p 8000:80 image_id

Затем подключитесь к IP-адресу виртуальной машины docker на порту 8000 для доступа к вашему приложению. Обратите внимание, что второй номер порта (80) в приведенной выше команде должен совпадать с портом, который прослушивает ваше приложение внутри контейнера. Поэтому, если вы изменили этот порт в своем приложении на основе других ответов, вам нужно изменить целевой порт выше.

0 голосов
/ 06 апреля 2020

Это не проблема Docker.

Вам необходимо связать 0.0.0.0:8000 в конфигурации Gunicorn.

Если вы используете CMD в dockerfile, обновите CMD (добавьте -b 0.0.0.0:8000):

CMD gunicorn -b 0.0.0.0:8000

Затем получите доступ, используя это:

http://localhost:8000

См. это для получения более подробной информации.

0 голосов
/ 06 апреля 2020

Во-первых, проверьте, действительно ли контейнер работает, с помощью команды: docker ps

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

Если вы видите свой контейнер в списке , убедитесь, что вы переходите на localhost:8000 в своем веб-браузере.

Если вы сделали это далеко, есть некоторые другие основные проблемы, которые я не могу расшифровать из этого поста.

...