我有一个准系统服务器,运行Linux,但没有安装图形界面。它仅在命令行中工作,我们不想改变它。
该服务器的IP地址是192.168.1.6
在这台机器上我们运行码头工人使用多个容器。其中一个容器是一个可通过 port 访问的 Web 应用程序80
。
当我curl localhost
使用准系统 Linux 时,我拥有网页的原始数据。我想查看同一 LAN 上每台计算机的网络应用程序。以机器上为例192.168.1.7
,我想在浏览器中输入192.168.1.6
并查看网络应用程序。
首先,这可能吗?如果是,您能给我一些指导吗?
答案1
有很多方法可以做到这一点,最简单的就是使用 Docker 的内置网络。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
6ef2c6836690 bridge bridge local
db24b1e2be58 host host local
edf606d533a5 none null local
默认情况下,您的容器会进入bridge
网络,除非您在docker run...
.
$ docker run -P -d -p 12345:80 nginxdemos/hello
执行此操作后,LAN 上的任何主机都可以使用 Docker 主机的 IP + 端口来访问它:
$ curl -I http://192.168.56.101:12345/
HTTP/1.1 200 OK
Server: nginx/1.13.8
Date: Fri, 27 Jul 2018 08:26:02 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Fri, 27 Jul 2018 08:26:01 GMT
Cache-Control: no-cache
防火墙
请记住,您的 Docker 主机的防火墙可能是导致流量无法进出 Docker 容器的原因。在某些情况下,您可能需要将 Docker Host 的端口(在上面的示例中为 12345)添加到允许列表,以便 Docker Host 外部的主机可以访问此端口。