Docker的网络问题

Docker虽好,网络难搞。一开docker,生产vpn用不了。

  • 在网易杭研工作期间,用网易vpn时就遇到过问题 Docker的172网络和vpn冲突问题.md 表现是开了vpn,docker中mysql就访问不了,除非删除vpn的172网段

  • 现在又碰到开了vpn,vnc的端口无法访问(因为这次过程取证需要用vnc) Docker daemon开启tcp端口及证书配置.md

Docker所开启的内网地址,为什么要开这些网络?

  • docker会开启内网地址

$ ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether e0:d5:5e:55:4b:e0 brd ff:ff:ff:ff:ff:ffinet 10.216.24.192/21 brd 10.216.31.255 scope global dynamic noprefixroute enp3s0valid_lft 690826sec preferred_lft 690826secinet6 fe80::f5ad:7bea:e0fb:f6a/64 scope link noprefixroute valid_lft forever preferred_lft forever# vincent @ vincent-B250M-DS3H in ~ [10:02:24] $ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# vincent @ vincent-B250M-DS3H in ~ [10:02:37] $ ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether e0:d5:5e:55:4b:e0 brd ff:ff:ff:ff:ff:ffinet 10.216.24.192/21 brd 10.216.31.255 scope global dynamic noprefixroute enp3s0valid_lft 690809sec preferred_lft 690809secinet6 fe80::f5ad:7bea:e0fb:f6a/64 scope link noprefixroute valid_lft forever preferred_lft forever3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:2f:e4:0b:72 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever4: br-52e5b703a337: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:ed:e9:7c:a8 brd ff:ff:ff:ff:ff:ffinet 172.18.0.1/16 brd 172.18.255.255 scope global br-52e5b703a337valid_lft forever preferred_lft forever5: br-e22ed54865c9: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:37:ec:2f:c0 brd ff:ff:ff:ff:ff:ffinet 172.19.0.1/16 brd 172.19.255.255 scope global br-e22ed54865c9valid_lft forever preferred_lft forever

如上集中在3个网段,都是B类地址,因为很多家中机,小企业机,都是用C类地址的,但是对网易来说不合适

网易是大企业,我的工作机ip10.216.24.192是A类的,可以容纳1千万台主机


网络地址规划

  • 办公网ip,A类

  • 办公vpn(运维用,连接测试和生产服务器),是172的,B类

  • docker网络,统统改为C类


桥接模式的网络流向

外部访问docker,比如16302端口打开,要访问到docker内部的取证服务

1.宿主机上谁打开了16302端口?


sudo netstat -anp | grep 16302  --显示是docker-proxy打开的

也就是访问docker内服务的请求,最先是docker daemon本身先接收到的

2.docker daemon将这个请求转到docker0网桥

3.docker0网桥将请求转到172网络

通过ip route设置,自然会转到veth(而这个veth就是docker中eth0的马甲)

如上2个问题就是出在第三步问题,这段和vpn的网段重复了,结果docker0发出的报文,到被导向了vpn,造成访问不了docker

  • 删除其他两个bridge,只保留docker0;而且docker0要变成是192网段的

  • 配置docker0,变成192.168网段 ,C类地址

看下docker官方的文档:


https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/

我在/etc/docker目录下新建了daemon.json文件,之所以用如下,是否为了和可能的冲突避免开


{"bip": "192.168.200.1/24"} 

然后重启


sudo systemctl daemon-reloadsudo systemctl restart docker.service

然后就好了

宿主机看ifconfig,docker0已经ip变了

进入容器内看,ifconfig,ip也已经变了

并且本地vnc和SpringBoot都可以用了!!

Docker网络地址冲突问题及解决【手到病除】相关推荐

  1. docker 网桥冲突了解决

    docker 网桥冲突了解决 删除网桥¶ 1.停用网桥 ip link set down <bridge> 2.删除网桥的配置文件 rm -f ifcfg-<bridge> 3 ...

  2. JAR冲突问题的解决以及运行状态下如何查看加载的类

    今天碰到群里小伙伴问,线上程序好像有多个不同版本的Netty包,怎么去看到底加载了哪一个? 在说如何看之前,先来说说,当你开始意识到项目里有多个不同版本的Jar包,都是因为遇到了这几个异常: 1.ja ...

  3. php5.3中ZendGuardLoader与wincache冲突问题的解决方法

    这篇文章主要介绍了php5.3中ZendGuardLoader与wincache冲突问题的解决方法,需要的朋友可以参考下 windows环境下,php5.3版本同时开始ZendGuardLoader和 ...

  4. idea使用git插件,出现冲突了怎么解决?多场景分析助你解决问题

    目录 写在前面 1.当a写完代码提交之后,b也修改了同样的文件,此时b使用pull会出错 问题出现的原因 解决方案1 解决方案2 注意事项 2.当a新加了一个文件提交之后,b也新加了一个文件后并进行提 ...

  5. Maven中 jar包冲突原理与解决办法依赖传递

    Maven中 jar包冲突原理与解决办法&依赖传递 管理包依赖是 Maven 核心功能之一,下面通过如何引入 jar 包:如何解析 jar 包依赖:包冲突是如何产生:如何解决包冲突:依赖管理解 ...

  6. 再也不怕SVN冲突:轻松解决SVN冲突

    什么时候容易出现冲突? 多个人同时修改了同个文件中的同一行代码 无法进行对比的二进制文件,比如图片等 如何解决冲突? 如上图,test_conflict.py文件发生了冲突,并且多出了几个文件,其中. ...

  7. ECSHOP中transport.js和jquery的冲突的简单解决办法

    ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原 ...

  8. git can‘t merge 的处理 代码冲突问题的解决

    git can't merge 的处理 代码冲突问题的解决 参考文章: (1)git can't merge 的处理 代码冲突问题的解决 (2)https://www.cnblogs.com/jint ...

  9. 【Docker】安装MySQL彻底解决3306端口占用问题

    [Docker]安装MySQL彻底解决3306端口占用问题 参考文章: (1)[Docker]安装MySQL彻底解决3306端口占用问题 (2)https://www.cnblogs.com/wuca ...

最新文章

  1. Spring MVC 到 Spring BOOT 的简化之路
  2. Opera浏览器无法观看土豆 优酷 新浪视频的解决办法!
  3. E0144 const char * 类型的值不能用于初始化 char * 类型的实体
  4. 点击按钮创建一个表格 点击按钮创建一个表格 权限选择 元素的value属性操作
  5. internet explorer 无法打开 Internet站点 已中止操作
  6. git 创建webpack项目_近期总结:手动搭建react项目,将项目从自己的库引入到新的项目中使用...
  7. 神经网络在线和离线的区别,神经网络网站
  8. 微信公众号授权登录(应用免登陆)
  9. 该怎么保持微信公众账号用户活跃度
  10. php控制梯形图,如何画梯形图? plc梯形图怎么画?如何画plc梯形图
  11. 四叶草的python代码_python绘图四叶草
  12. BIGEMAP如何发布百度离线地图及二次开发API
  13. 随机过程(1.1)—— 概率空间、分布函数、Riemann-Stieltjes 积分
  14. 基于STM32设计物联网在线智能称重系统(OneNet)_2022
  15. 腾讯-腾讯云citybase产品白皮书
  16. 试解leetcode算法题--求解方程
  17. Java Agent 型内存马调试系列 (一)
  18. 【docker系列】四种基础网络模式及自定义网络
  19. Behance上值得借鉴的设计风格
  20. Vue2.0开发之——loader的作用及调用过程(06)

热门文章

  1. 神经网络与相对论质量和能量守恒
  2. linux开vnc,linux 开启 vnc
  3. 什么是区块链,区块链又是什么?
  4. Java毕设项目电影院购票系统计算机(附源码+系统+数据库+LW)
  5. 第六章 从信息互联网到价值互联网 [27]
  6. R语言入门——R对象
  7. 吉时利2657A高功率数字源表-多功能高准度源表
  8. 本地方法栈 程序计数器 方法区
  9. js逆向案例-猿人学比赛题(中等及以下难度的)
  10. Razer Fintech 委任林祥源先生为顾问委员会成员