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, вам нужно выполнить два действия:
Во-первых, когда вы создаете свой контейнер, вы должны конкретно указать отображение портов. Если вы бежите
docker run
с-P
опция, порты, установленные в DockerfileEXPOSE
будет открыт для случайных портов в среде 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
А чтобы сопоставить порт 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.