美文网首页
docker 中的 host 模式

docker 中的 host 模式

作者: 追风骚年 | 来源:发表于2021-01-19 17:51 被阅读0次

昨天被问到一个问题,服务器中的 docker 网络使用的是那种模式?
这个一般都是默认的桥接模式 (bridge)。

我还是不放心,今天再次测试了一下

$ docker network ls
1230cf36f7d7        bridge              bridge              local
1797828bb68f        host                host                local
7c21a101ee63        none                null                local

在 docker 创建后会默认创建如下的 3 个网络,bridge 为 default 模式。
我其实想测试一下如何使用 host 模式?

$ docker run --network=host -p 8088:80 nginx

WARNING: Published ports are discarded when using host network mode

这里会有个提示 host 模式的端口映射是会被丢弃的,简单点说 -p 参数无效。
因为 host 模式的所用的网络资源都会依赖于宿主机的网络,但是这个 nginx 服务对外暴露的 80 端口应该通过宿主机的 ip 可以直接访问。

$ curl localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
$ curl 0.0.0.0
curl: (7) Failed to connect to 0.0.0.0 port 80: Connection refused
$ curl 192.168.1.3
curl: (7) Failed to connect to 192.168.1.3 port 80: Connection refused 

我测试了 3 个地址,都是无法访问到我起的 nginx 服务。后面找到一个文档提到了“mac系统没办法用host网络模式!”

mac系统没办法用host网络模式!

所以只能 ssh 到服务器上,随便找了一台 ecs

$ docker run -d --network=host nginx

等待容器运行结束,我们就可以通过 ecs 的外网地址访问到刚刚启动的 nginx 服务了。

参考文档

相关文章

网友评论

      本文标题:docker 中的 host 模式

      本文链接:https://www.haomeiwen.com/subject/jclczktx.html