我在我的Ubuntu计算机上启动了一个Docker
容器,并使用以下命令将所有8080
端口转发到其80
端口:
sudo docker run -d -p 8080:80 -v /var/www/html/work:/var/www my_server --name "server"
我使用以下命令获取容器IP:
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' server
并收到:
172.17.0.33
我在phpinfo()
/var/www/html/work/phpinfo.php
命令的php文件
但浏览到172.17.0.33:8080/phpinfo.php
时,我在浏览器上收到一条错误消息,说它无法连接到服务器。
我的胆量告诉我,我需要以某种方式将容器IP暴露给世界,我只是不知道如何......
在OSX中我使用docker-machine
默认ip来浏览容器,但在Ubuntu中我没有一个docker-machine
这样做的正确方法是什么?
答案 0 :(得分:3)
您应该可以使用主机localhost:8080或主机公共IP联系服务器。
但是如果您使用的是由docker守护程序管理的容器IP,那么您将使用端口80,而不是主机端口8088。
另请参阅“Network configuration”:
当Docker启动时,它会在主机上创建一个名为
docker0
的虚拟接口。它从主机上未使用的RFC 1918定义的私有范围中随机选择一个地址和子网,并将其分配给docker0
。
几分钟前,当我启动它时,Docker做出了选择172.17.42.1/16
- 一个16位网络掩码,为主机及其容器提供65,534个地址。但
docker0
不是普通的界面。它是一个虚拟以太网桥,可以自动在连接到它的任何其他网络接口之间转发数据包 这允许容器与主机和彼此进行通信。
最好使用只能访问已发布内容的主机,而不是容器本身。
答案 1 :(得分:0)
如果您在Ubuntu中运行docker,请使用Ubuntu服务器ip访问您的网站。
在Ubuntu服务器上运行浏览器时,只需访问即可 http://localhost:8080/phpinfo.php