写在前面
- Docker 容器访问互联网,一直通过
--net=host
参数间接实现。该方式存在弊端,因为该模式禁用Docker容器的网络隔离。容器共享宿主机的网络命名空间,直接暴露在公共网络中,即容器和宿主机具有相同的IP地址。 - 很多实验操作在容器内部,联网对于安装、更新必要软件至关重要。
--net=host
参数对于很多大数据平台镜像产生副作用,例如无法正常启动等- 启用宿主机路由,解决问题
启用命令
- 宿主机的ip路由转发功能一定要打开,否则所创建的容器无法联网!
- 容器run后运行下面命令也有效
- 墙裂推荐
echo 1 > /proc/sys/net/ipv4/ip_forward
docker run --privileged -tid -p 8000:8000 -p 8088:8088 -p 8042:8042 -p 50070:50070 --net=host limengjiao029/hive:v0.1
参考文章
博文小结
- 个人研究不太深入。例对docker容器网络通信方面,个人知识盲点,存在
--net=host
参数可用方案,自然懒得去探索其他方案。 - 可用方案不能满足最近实验要求,所以探索其他替代方案。通过开启宿主机路由转发方案确实方便、高效;换在之前的实验,可以实验效率将会大大提高。
- 该问题困扰博主些许时日,可能看起来简单,但个人认为很有必要记录下。
- 另,针对有时间的读者,建议学习下推荐的第 2 篇 参考文章,掌握下网络通信相关知识
- 谢谢