如何在docker中访问guest IP

我正在用docker-compose开始我的第一步。 我用这个内容创build了一个非常基本的docker-compose.yml文件:

version: '2' services: webserver: build: ./docker/webserver image: runwaytest_web ports: - "80:80" - "443:443" volumes: - /myhome/Docker/simple-docker/www:/var/www/html - /myhome/Docker/simple-docker/symfony3:/var/www/symfony3 links: - mysql mysql: # mysql stuff 

我在./docker/webserver也有一个非常基本的./docker/webserver 。 服务器正确创build。 如果我SSH容器,Apache正在运行,configuration文件是正确的。

当我检查我的容器从主机,IP是172.18.0.3,但我不能ping它,虚拟主机symfony3不起作用(实际上我不能达到基地http文档文件夹在/var/www )。

我正在使用Docker for Mac。

我做错了什么?

请参阅https://stackoverflow.com/a/24149795/99189为什么你不能ping你的容器。 一般来说,不要指望能够做到这一点。 对容器唯一的networking访问是通过你公开的端口,在这种情况下是80和443。

从在Docker容器中运行此操作并使用虚拟主机的angular度来看,当向localhost:80 / localhost:443发出请求时,您将需要您的http客户端发送Host:标头。

假设您正在使用浏览器进行testing,并且您的虚拟主机是user3174311.com ,请尝试以下操作:

  • 127.0.0.1 user3174311.com行添加到/etc/hosts
  • 请在浏览器中访问user3174311.com

这是应该发生的事情:

  • 浏览器在/etc/hosts查找user3174311.com并将其parsing为127.0.0.1
  • 浏览Host: user3174311.com头向127.0.0.1:80发送一个http请求
  • docker工正在监听这个地址并将连接转发到你的容器中的端口80
  • apache会看到请求,查看Host:头并确定要使用的正确的虚拟主机

之后,这取决于你的apache / symphony3configuration。 如果它不工作,你将不得不发布更多的细节。