访问在 Vagrant 中运行的 Docker 容器

Bil*_*ill 1 curl vagrant docker vagrantfile docker-compose

嗨,我正在使用 vagrant 和 docker-compose 来运行一个简单的 Web 应用程序。它在 OSX 上运行良好,但是在流浪盒子 (ubuntu/trusty64) 中运行时它不起作用。

我不想将 docker provider 用于 vagrant,因为我正在为另一种类型的部署测试它。这应该可以工作,因为我正在做与在本地机器上完全相同的事情。

为什么我什至不能在应用程序上 curl 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#
Run Code Online (Sandbox Code Playgroud)

看起来像网络的东西。

Bil*_*ill 6

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

config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
Run Code Online (Sandbox Code Playgroud)

现在我可以连接到我的本地端口 80,它实际上在我的 docker 容器内,在我的 vagrant vm 中运行,有点令人困惑。

$ curl localhost:8080
Hello, world!
Run Code Online (Sandbox Code Playgroud)