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

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

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

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

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

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

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

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run waitDownloading 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-cljEXPOSE 8080WORKDIR /appCOPY . /app

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

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

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

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

@pratheek61 Никакого результата. netstat -tunl | grep 8080 возвращает пустое значение.

Вы забыли сказать, что происходит, когда вы пытаетесь подключиться к сервису.

Можете ли вы опубликовать выходные данные netstat -tunlp?

@MichaelHampton Абсолютно. Я добавил вывод docker, и при попытке подключиться к веб-сервису ничего не происходит.

@prateek61, я на OSX, и когда я запускаю netstat -tunlp, он сообщает мне ** netstat: опция требует аргумента – p**.

@prateek61 netstat -tunl | wc содержит более 500 строк. Копирование всего этого занимает слишком много времени. Но результат выглядит так.

@Frye вы видите 8080, указанный в выходных данных? Попробуйте поискать его.