您好我使用vagrant和docker-compose来运行一个简单的Web应用程序。它在OSX上运行良好,但是当它在一个流浪盒(ubuntu / trusty64)中运行时,它不会起作用。
我不想将docker提供程序用于vagrant,因为我正在为另一种类型的部署测试它。这应该有效,因为我做的事与我本地的机器完全相同。
为什么我甚至不能在应用程序上卷曲localhost端口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#
似乎像网络一样。
答案 0 :(得分:1)
是的,我只需要像这样启用端口转发:
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
现在我可以连接到我的本地端口80,它实际上是在我的vagrant vm里面运行的docker容器里面,有点令人困惑。
$ curl localhost:8080
Hello, world!
答案 1 :(得分:0)
在您的示例中,看起来您运行的唯一具有已发布报表的容器如下:
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
能够工作而不是{{ 1}}因为它是主机的端口8080设置为监听。
如果您希望在主机的端口80上访问容器的端口80,则需要将端口80发布到端口80。