我试图关注some instructions on GitHub 设置端口转发但我没有运气。你能帮忙吗?我按照书中的一个例子构建了容器,这里是Dockerfile:
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
),那么它将与我的VM的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
我使用在OS X 10.10.1下运行的VirtualBox版本4.3.20。
答案 0 :(得分:0)
这实际上是我身边的一个错误。我在Dockerfile中暴露了端口8000;但是,我没有更改nginx中的设置。因此,我将其更改回端口80并按照以下方式启动容器,并且它工作正常。现在我可以在另一台机器上用浏览器点击它。
docker run -d -p 8000:80 --name static_web static_web \nginx -g "daemon off;"