Ответ 1
Вам нужно будет использовать переадресацию портов, чтобы иметь доступ к вашему контейнеру докера из внешнего мира.
Из Документы Docker:
По умолчанию контейнеры Docker могут подключаться к внешнему миру, но внешний мир не может подключаться к контейнерам.
Но если вы хотите, чтобы контейнеры принимали входящие соединения, вам нужно будет указать специальные опции при вызовеdocker run
.
Итак, что это значит? Вам нужно будет указать порт на вашем хост-компьютере (обычно порт 80) и переадресовать все соединения на этом порту в контейнер докеров. Поскольку вы используете Apache в контейнере докера, вы, вероятно, захотите переправить соединение с портом 80 в контейнере докера.
Это лучше всего сделать с помощью опции -p
для команды docker run
.
sudo docker run -p 80:80 -t -i <yourname>/supervisord
Часть команды, которая говорит -p 80:80
, означает, что вы пересылаете порт 80 с хоста на порт 80 в контейнере.
Когда это правильно настроено, вы можете использовать браузер для поиска на http://88.x.x.x, и соединение будет перенаправлено в контейнер, как предполагалось.
Docker docs подробно описывает параметр -p
. Существует несколько способов указания флага:
# Maps the provided host_port to the container_port but only
# binds to the specific external interface
-p IP:host_port:container_port
# Maps the provided host_port to the container_port for all
# external interfaces (all IP:s)
-p host_port:container_port
Изменить:. Когда этот вопрос был первоначально отправлен, не было официального контейнера докеров для веб-сервера Apache. Теперь существует существующая версия.
Самый простой способ запустить Apache - использовать официальный контейнер Docker. Вы можете запустить его, используя следующую команду:
$ docker run -p 80:80 -dit --name my-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
Таким образом вы просто монтируете папку в своей файловой системе, чтобы она была доступна в контейнере докера, а ваш хост-порт перенаправляется в порт контейнера, как описано выше.