如何在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。 如果它不工作,你将不得不发布更多的细节。