docker:端口映射不适用于非默认机器
在玩docker
我发现了一些奇怪的东西(至less对我来说)。 我创build了一个容器:
docker run -p 8080:80 nginx
而且无论我尝试什么。 我从http://localhost:8080
看不到任何东西。 最后我发现我做到了
eval $(docker-machine env foo)
并切换到另一台机器。 当切换回默认机器时,HTTP服务器再次正常工作。
有人可以解释为什么这是?
我正在使用Mac 1.12的Docker。
我可以从你的信息中猜测你正在使用Docker工具箱(可能是VirtualBox)。 Docker工具箱创build一个Linux主机(基于boot2docker映像),并在主机中运行你的nginx容器。 -p 8080:80
会将nginx中的端口80导出到主机上的 8080。 因此,要从您的计算机访问它,您需要使用http:// HOST-IP-ADDRESS:8080 。
您可以使用docker-machine ls
来查找您的主机IP
Docker工具箱的另一种select是使用Docker for Mac或Docker for Windows(google他们)。 这些删除了VirtualBox的需要。 您的计算机实际上成为运行Docker容器的主机。 在这种情况下,运行http://localhost:8080
会给你你的nginx服务器。
- 错误:mkdir与chown不能在Dockerfile中工作(nginx与php-fpm)
- 502通过Jwilder的Nginx代理访问虚拟主机时出现错误的网关
- 将networking服务器容器连接到MySQL容器
- 容器命令不能被调用
- 在Docker中使用Spring保存文件后“const_get':未初始化的常量(NameError)'
- Mysql:转发主机查找失败:未知主机
- Docker占用磁盘空间/ var / lib / docker / devicemapper / devicemapper
- 在docker-compose运行命令后,Docker compose:命令
- Docker多个具有持久性的MySQL容器