访问运行在Vagrant中的Docker容器

嗨,我正在使用stream浪汉和docker – 撰写运行一个简单的networking应用程序。 它在OSX上工作正常,但是当它在一个无用的盒子(ubuntu / trusty64),它不会工作。

我不想使用docker提供商为stream浪者,因为我testing这是另一种types的部署。 这应该工作,因为我在我的本地机器上完全相同的事情。

为什么我甚至不能curl本地端口80(或任何我试过的端口)在应用程序?

root@vagrant-ubuntu-trusty-64:/home/vagrant/slack-challenge# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03f4740887d7 slackchallenge_nginx "/bin/sh -c 'servi..." 43 minutes ago Up 12 minutes 0.0.0.0:8080->80/tcp slackchallenge_nginx_1 ed80831b69a9 slackchallenge_fpm "/usr/bin/supervisord" 43 minutes ago Up 12 minutes 9000/tcp slackchallenge_fpm_1 140ea815843b mariadb "docker-entrypoint..." 43 minutes ago Up 12 minutes 3306/tcp slackchallenge_db_1 root@vagrant-ubuntu-trusty-64:/home/vagrant/slack-challenge# curl localhost curl: (7) Failed to connect to localhost port 80: Connection refused root@vagrant-ubuntu-trusty-64:/home/vagrant/slack-challenge# 

看起来像networking。

是的,我只需要像这样启用端口转发:

 config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1" 

现在我可以连接到我的本地端口80上,这个端口实际上在我的stream浪汉虚拟机里面运行的Docker容器中,有点令人困惑。

 $ curl localhost:8080 Hello, world! 

在你的例子中,它看起来像你正在运行的具有已发布报告的唯一容器如下所示:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03f4740887d7 slackchallenge_nginx "/bin/sh -c 'servi..." 43 minutes ago Up 12 minutes 0.0.0.0:8080->80/tcp slackchallenge_nginx_1 

在PORTS列下,这表示主机的端口8080映射到了容器的端口80.在这个设置中,我期望curl localhost:8080工作,而不是curl localhost因为它是被设置为监听的主机端口8080 。

如果您希望在主机的端口80上访问容器的端口80,则需要将端口80发布到端口80。