docker容器聯網問題

寫在前面

  • Docker 容器訪問互聯網,一直通過--net=host 參數間接實現。該方式存在弊端,因爲該模式禁用Docker容器的網絡隔離。容器共享宿主機的網絡命名空間,直接暴露在公共網絡中,即容器和宿主機具有相同的IP地址。
  • 很多實驗操作在容器內部,聯網對於安裝、更新必要軟件至關重要。
  • --net=host 參數對於很多大數據平臺鏡像產生副作用,例如無法正常啓動等
  • 啓用宿主機路由,解決問題

啓用命令

  • 宿主機的ip路由轉發功能一定要打開,否則所創建的容器無法聯網!
  • 容器run後運行下面命令也有效
  • 牆裂推薦
echo 1 > /proc/sys/net/ipv4/ip_forward
  • --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 篇 參考文章,掌握下網絡通信相關知識
  • 謝謝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章