Назад | Перейти на главную страницу

Как открыть порт в контейнере докера

Я запустил веб-службу в контейнере докеров на настраиваемом порту (8080). Здесь я пытаюсь запустить контейнер, открывая соответствующий порт контейнера (как видел здесь), но безрезультатно.

docker run -p 127.0.0.1:8080:8080 beatthemarket run wait

Но я не могу достичь этой конечной точки веб-службы.

я) Правильно ли я выставляю порт контейнера? II) Как можно устранить неполадки, если это порт, который недоступен, или если моя веб-служба просто не вызывается (было бы неплохо иметь возможность выполнить оболочку в контейнере и просто скрутить конечную точку).

Мой Dockerfile можно увидеть Вот. И я использую Adzerk boot-clj базовое изображение.

Собственно докер запущен, каждый раз извлекает кучу банок. затем ботинок блоки ( wait задача), чего я и хочу (веб-сервер будет обрабатывать веб-запросы). И вот где я потерялся. Загрузка в докере блокируется, как я просил. Но я не могу понять основные Привет мир сообщение, что корневой URI должен вернуться.

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
Downloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar...
Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/
Retrieving pod-2.5.5.jar from https://clojars.org/repo/
Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/
Retrieving core-2.5.5.jar from https://clojars.org/repo/
...
Implicit target dir is deprecated, please use the target task instead.
Set BOOT_EMIT_TARGET=no to disable implicit target dir.

В Хром, curl и wget сообщают, что в соединении отказано.

$ curl http://127.0.0.1:8080/
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused

$ wget http://127.0.0.1:8080/
--2016-04-21 20:07:32--  http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... failed: Connection refused. 

Вам нужно добавить EXPOSE в ваш Dockerfile для порта 8080.

Вот ссылка из Docker: https://docs.docker.com/engine/reference/builder/#expose

Ваш последний Dockerfile должен выглядеть так:

FROM adzerk/boot-clj

EXPOSE 8080

WORKDIR /app
COPY . /app

переключатель -p пробьет дыру через мост между вашим хостом и вашим экземпляром докера, -p host_port: docker_instance_port

Теперь вам нужно выяснить, где находится ваш докер-хост. Если вы используете VirtualBox, попробуйте запустить:

докер-машина env

http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html