Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

docker 容器网络默认使用 bridge 桥接模式,正常情况下,容器会使用 daemon.json 中定义的虚拟网桥来与宿主机进行通讯。

最近更新 Docker for mac 之后,发现以前容器中可以访问的局域网内服务(使用宿主机所在的局域网 IP 访问),变得不可访问了。一开始以为是新版本改了默认网络配置,查了半天 release log 并没有找到相关条目。

后来在同事的帮助下发现问题所在:

由于换了新的工位,宿主机的局域网 IP 网段由 172.16.*.* 切换到了 172.17.*.* ,刚好和 docker 虚拟网桥 IP 段 172.17.*.* 冲突。

解决问题的办法也很简单:

1、如果是  Docker for mac,打开 Preferences -> Daemon -> Advanced ,修改(或增加)配置 {"bip" : "172.16.10.1/24"} ,从而避免网段冲突的问题;

2、Linux 版本的 docker 配置,请参看这里:《Docker 修改默认的网段

另外在问题解决的过程当中,发现了一些知识点:

1、docker-compose 的网络配置字段为 network_mode: "host" 而非 net: "host"

2、docker for mac 的容器里可以通过 docker.for.mac.host.internal 域名直接访问宿主机服务

3、docker inspect <container_id> 命令,可以查看到容器的网络配置

原文地址:https://www.cnblogs.com/kaiye/p/8663044.html

时间: 2024-08-04 08:44:48

Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案的相关文章

OpenvSwitch实现Docker容器跨宿主机互联

1. OpenvSwitch简介 Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略.网络隔离.流量监控等等.主要实现代码为可移植的C代码. 它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag

docker容器共享宿主机环境,从而为镜像体积减负

一.背景介绍 响应公司技术发展路线,开发的服务均需要将打成docker镜像,使用docker进行统一管理.可是随着服务越来越多,镜像也越来越多.每次制作镜像的时候都需要将依赖打进容器,这样一个jre的环境就是100多M.有一天突发奇想,容器能不能共用宿主机的环境?这样每次打镜像时体积就会少不少.于是就动手试试了试,结果还真可以,哈哈. 二.测试 我们测试用的是java的web项目做的测试,框架用的springboot,由于集成了tomcat插件,所以web项目打成jar包即可运行. 1.在宿主机

让docker容器和宿主机使用同一网段

system os:  centos 7.2 4.7.0-1.el7.elrepo.x86_64 docker version: 1.12.0 1.创建一个network docker network create -d macvlan  --subnet=192.168.209.0/24 --gateway=192.168.209.2 -o parent=eno16777728 mynet -d macvlan  加载kernel的模块名--subnet 宿主机所在网段--gateway 宿主

docker 容器和宿主机相互拷贝数据

docker 从容器中向主机拷贝数据: sudo docker cp <containerId>:/file/path/within/container /host/path/target /file/path/within/container : 容器里面的目录 /host/path/target : 主机目录 sudo docker cp 88fc08c48349:/opt/apache-tomcat-8.0.41/logs /opt/logs/ ---------------------

配置Docker多台宿主机间的容器互联

如果要在生产和测试环境大规模采用docker技术,首先就需要解决不同物理机建的docker容器互联问题.本文介绍在centos7环境下采用open vswitch实现不同物理服务器上的docker容器互联的配置. 环境介绍: Server1: 192.168.115.5/24 Server2: 192.168.115.6/24 一:在Server1和Server2上分别用rpm方式安装docker并启动服务 # yum list *docker* # yum -y install docker

docker容器与物理机之间拷贝文件的方法

一般情况下,我们在启动容器的时候可以使用-v参数映射宿主机的文件或者目录到容器里,这样的话,在宿主机相关目录下的文件修改会自动在容器里生效. 但是,如果我们已经启动了一个容器的话,就只能使用下面的这种方式在容器和宿主机之间拷贝文件了. docker ps 获取目标容器的ID或者容器的名称    # 我这里的是容器ID为52261df2fab6 docker inspect -f'{{.Id}}' 容器的ID       # 获取容器的ID全名称 得到一串类似52261df2fab612b24b3

Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目

Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http://blog.csdn.net/leafage_m/article/details/72081987

VirtualBox实现宿主机和虚拟机之间网络的通讯

摘要:实现宿主机和虚拟机之间网络的通讯 环境: 宿主机操作系统            WindowsXP 虚拟机软件                    VirtualBox 虚拟机操作系统             Linux 原理: host-only(主机模式) 在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开.这时你就可採用host-only模式. 在host-only模式中.全部的虚拟系统是能够相互通信的,但虚拟系统和真实的网络是被隔离开的. 提示:在host-only模式下

仅主机模式下vmware虚拟机中win7如何使宿主机与寄生机网络互联互通

实验环境:仅主机模式下vmware虚拟机中win7如何使宿主机与寄生机网络互联互通. 需求:VMware Workstation12 Pro或以上版本,并已安装一个win7系统. ----------------下为连接宿主机与寄生机网络的步骤------------- 1主机中打开控制面板-网络和INTERNET-网络和共享中心,并点击更改适配器设置. 2在网络连接里双击VMware Network Adapter VMnet1. 3在VMware Network Adapter VMnet1