无法从网络上的其他计算机浏览 dockerized 网络应用程序
Cannot browse dockerized web app from other computers on network
我希望与我的 Mac 在同一网络上的任何计算机都能够访问我的 [=] 上的 docker 化 Rails 网络应用程序 运行ning 38=].
在我的 Mac (10.9.5) 上,当我通过 docker ip和我分配的端口,192.168.99.100:3000
Docker 1.8.1 在 Virtualbox 5.0.2 下 运行ning。
我正在使用 Docker-compose,docker-compose.yml 文件的相关部分是:
web:
build: .
command: 'bash -c ''bundle exec unicorn -p $PORT -c ./config/unicorn-local.rb'''
working_dir: /app/user
env_file:
- .docker_dev_env_config
- .docker_dev_env_personal
environment:
PORT: 3000
DATABASE_URL: 'postgres://postgres:@herokuPostgresql:5432/postgres'
ports:
- '3000:3000'
links:
- herokuPostgresql
我的Docker文件是
FROM heroku-ruby2.0.0 # a local image based on heroku/ruby with ruby 2.0.0
EXPOSE 3000
ENV widget foo
我的 Mac 在本地网络上的 IP 地址始终设置为 192.168.0.33。
如何允许本地网络上的测试人员通过 192.168.0.33:3000 访问 运行ning docker 化的应用程序?
(FWIW 如果我 运行 我的网络应用程序在 Vagrant 下 - 而不是 Docker - 网络上的其他测试人员可以通过浏览 192.168.0.33:3000 访问网络应用程序。我的 Vagrant 也是运行ning 在 Virtualbox 下。我的 Vagrantfile 包含 config.vm.network :forwarded_port, guest: 3000, host: 3000
但我没有看到 docker-compose.yml)
的任何等效项
使用 docker-toolkit 的 Docker Quickstart Terminal 应用程序时创建的 'default' Virtualbox 除了定义的 ssh 之外没有任何端口。
在 Mac 上使用 VirtualBox 和 Docker 时的解决方案是:
- 运行 VirtualBox
- 单击 'default' 框(或您的 Docker 设置使用的任何框)
- 转到“设置”>“网络”>“适配器 1”
- 点击'Port Forwarding'
- 创建一个新规则,如下例 fwds 3000 到 3000
(务必将主机 ip 栏留空)
您需要将端口 3000 从虚拟机转发到您的本地主机。为此,您可以 运行 以下脚本
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port00,tcp,,00,,00";
VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port00,udp,,00,,00";
这会将端口转发到您的本地主机。如果您想将端口转发到其他接口,则必须在命令中提供该接口的 IP 地址。这是 --natpf
命令
的一般语法
[--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>]
所以你可以相应地修改它。
请参阅此以进一步阅读。 Docker on Mac. The Missing Guide
我希望与我的 Mac 在同一网络上的任何计算机都能够访问我的 [=] 上的 docker 化 Rails 网络应用程序 运行ning 38=].
在我的 Mac (10.9.5) 上,当我通过 docker ip和我分配的端口,192.168.99.100:3000
Docker 1.8.1 在 Virtualbox 5.0.2 下 运行ning。
我正在使用 Docker-compose,docker-compose.yml 文件的相关部分是:
web:
build: .
command: 'bash -c ''bundle exec unicorn -p $PORT -c ./config/unicorn-local.rb'''
working_dir: /app/user
env_file:
- .docker_dev_env_config
- .docker_dev_env_personal
environment:
PORT: 3000
DATABASE_URL: 'postgres://postgres:@herokuPostgresql:5432/postgres'
ports:
- '3000:3000'
links:
- herokuPostgresql
我的Docker文件是
FROM heroku-ruby2.0.0 # a local image based on heroku/ruby with ruby 2.0.0
EXPOSE 3000
ENV widget foo
我的 Mac 在本地网络上的 IP 地址始终设置为 192.168.0.33。
如何允许本地网络上的测试人员通过 192.168.0.33:3000 访问 运行ning docker 化的应用程序?
(FWIW 如果我 运行 我的网络应用程序在 Vagrant 下 - 而不是 Docker - 网络上的其他测试人员可以通过浏览 192.168.0.33:3000 访问网络应用程序。我的 Vagrant 也是运行ning 在 Virtualbox 下。我的 Vagrantfile 包含 config.vm.network :forwarded_port, guest: 3000, host: 3000
但我没有看到 docker-compose.yml)
使用 docker-toolkit 的 Docker Quickstart Terminal 应用程序时创建的 'default' Virtualbox 除了定义的 ssh 之外没有任何端口。
在 Mac 上使用 VirtualBox 和 Docker 时的解决方案是:
- 运行 VirtualBox
- 单击 'default' 框(或您的 Docker 设置使用的任何框)
- 转到“设置”>“网络”>“适配器 1”
- 点击'Port Forwarding'
- 创建一个新规则,如下例 fwds 3000 到 3000 (务必将主机 ip 栏留空)
您需要将端口 3000 从虚拟机转发到您的本地主机。为此,您可以 运行 以下脚本
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port00,tcp,,00,,00";
VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port00,udp,,00,,00";
这会将端口转发到您的本地主机。如果您想将端口转发到其他接口,则必须在命令中提供该接口的 IP 地址。这是 --natpf
命令
[--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>]
所以你可以相应地修改它。 请参阅此以进一步阅读。 Docker on Mac. The Missing Guide