2015-01-25 2 views
-1

Я попытался следовать some instructions on GitHub , чтобы настроить переадресацию порта, но мне не повезло. Не могли бы вы помочь? Я построил контейнер следующий пример в книге и вот Dockerfile:Не удается сопоставить порты между хостом и контейнером Docker на OSX

FROM ubuntu:14.04 
RUN apt-get update 
RUN apt-get install -y nginx 
RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html 
EXPOSE 8000 

шаги:

$ boot2docker stop 
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 delete forwardHostPort8000ToDockerVM 
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "forwardHostPort8000ToDockerVM,tcp,,8000,,8000" 
$ boot2docker start 
$ docker run -d -p 127.0.0.1:8000:8000 --name static_web static_web \nginx -g "daemon off;" 
122ba8949685ce91b84890656c399b19028cb2e8a7e8be3d4a19122eba9ab592 

Это результат:

$ curl 127.0.0.1:8000 
curl: (52) Empty reply from server 

$ telnet 127.0.0.1 8000 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
Connection closed by foreign host 

Примечание: Если я не привязывайте его к интерфейсу 127.0.0.1 (т. е. только -p 8000:8000), то он будет работать с IP-адресом моей виртуальной машины:

$ curl 192.168.59.103:8000 
Hi, I am in your container 

Env:

$ boot2docker -v 
Boot2Docker-cli version: v1.3.1 
Git commit: 57ccdb8 

$ docker -v 
Docker version 1.3.1, build 4e9bbfa 

Я использую VirtualBox версии 4.3.20, работающих под управлением OS X 10.10.1.

+0

Спасибо @alexwlchan за помощь в использовании формата. – skwok

ответ

0

Это на самом деле ошибка на моей стороне. Я выставил порт 8000 в файле Docker; однако я не изменил настройку в nginx. Итак, я поменял его на порт 80 и начал контейнер, а затем работал. Теперь я могу ударить его браузером на другой машине.

docker run -d -p 8000:80 --name static_web static_web \nginx -g "daemon off;"