Docker在Mac和Windows操作系统下对应的参数network=host会发生失效的问题。因此,如果你执行的docker run命令中包含了该参数,在使用的时候可能会出现Connection refused的错误。

启动命令示例:

docker run -d --network=host --name storage -e TRACKER_SERVER=ip:22122 -v /Users/zzs/develop/temp/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

上述命令在Linux操作系统下是没有问题的。通过network=host启动host模式指定是容器与主机享受相同的network namespace。也就说容器使用了什么端口,对应的宿主机与其逐一对应。

host模式设计出来就是为了性能,但是这却对docker的隔离性造成了破坏,导致安全性降低。

在性能场景下,可以用 --netwokr host 开启 Host 模式,但需要注意的是,如果你用Windows或 Mac 本地启动容器的话,会遇到host模式失效的问题。

原因是host模式只支持Linux宿主机。这也就是会什么会出现Connection refused的原因。

针对此问题不是没有解决的方案,逐一映射需要的端口即可,比如:

docker run -p 8080:8080

此时通过docker ps进行查看时,会发现已经正常映射了。当使用host模式时,docker ps命令也能帮助你查看到其实并没有端口映射。



mac docker Connection refused network host插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2020/07/22/mac-docker-connection-refused-network-host/