Boot2Docker - доступ к веб-серверу как локальный

Создан веб-сервер Apache в качестве контейнера Docker, но требуется доступ к нему в браузере Windows OS в качестве локального хоста.

Я могу получить доступ к веб-серверу с частным IP-адресом boot2docker, который является 192.168.59.103, но я хотел бы получить доступ к веб-серверу как локальный, то есть 127.0.0.1.

Ниже приведена моя настройка Docker Container

Запуск Boot2docker на открытых портах Oracle VM: "EXPOSE 80 443" в файле Docker

Команда, использованная для создания файла Docker:

docker run --net=host --name=webserver1 -v /home/data:/data/www/www.samplewebserber.com -v `password`:/scripts -d folder/serverfolder  /scripts/run.sh

2 ответа

Решение

Если вы хотите получить доступ к localhost к портам 80 и 443, вам нужно выполнить два действия:

  1. Во-первых, когда вы создаете свой контейнер, вы должны конкретно указать отображение портов. Если вы бежите docker run с -P опция, порты, установленные в Dockerfile EXPOSE будет открыт для случайных портов в среде Boot2Docker. Если вы хотите отобразить это специально, вы должны выполнить:

    docker run \
      --net=host \
      --name=webserver1 \
      -v /home/data:/data/www/www.samplewebserber.com \
      -v `password`:/scripts \
      -d -p 80:80 -p 443:443 \
      folder/serverfolder  \
      /scripts/run.sh
    
  2. А чтобы сопоставить порт Boot2Docker с вашей средой хоста, как предложила ссылка Джо Ниланда, вы должны выполнить переадресацию портов с использованием SSH-туннелирования:

    boot2docker ssh -L 80:localhost:80

    boot2docker ssh -L 443:localhost:443

Вы можете перейти к отображению портов, если хотите.

boot2docker фактически создал vm с ядром linux в вашей Mac OS с VirtualBox, а 192.168.59.103 - это ip для этого vm.

Таким образом, вы должны установить порт вперед для этого VM

Обратите внимание, что в Mac OS для порта 80 требуется высокое разрешение, поэтому в этом примере я использую 8080.

Другие вопросы по тегам