写在前面

  • Docker 容器访问互联网,一直通过​​--net=host​​ 参数间接实现。该方式存在弊端,因为该模式禁用Docker容器的网络隔离。容器共享宿主机的网络命名空间,直接暴露在公共网络中,即容器和宿主机具有相同的IP地址。
  • 很多实验操作在容器内部,联网对于安装、更新必要软件至关重要。
  • ​--net=host​​ 参数对于很多大数据平台镜像产生副作用,例如无法正常启动等
  • 启用宿主机路由,解决问题

启用命令

  • 宿主机的ip路由转发功能一定要打开,否则所创建的容器无法联网!
  • 容器run后运行下面命令也有效
  • 墙裂推荐
echo 1 >
  • ​--net=host​​ 参数使用
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 篇 参考文章,掌握下网络通信相关知识
  • 谢谢