Docker 的网络

运行 ifconfig 找到 docker0 : 虚拟网卡默认网卡名称为docker0

  

查看docker 的网桥:

我这里默认们没有进行安装 网桥管理设备:进行安装一下;

yum install  bridge-utils

  

命令:查看网桥crctl show:
  

注意上图中的interfaces  这里为空,我们启动一个新的容器如下:

命令: docker run -d -it --name centos6 centos

  

我们进入容器中查看该容器的ip 地址

我这里的容器是最小化的centos,一般情况我都会安装一下几个

yum install  net-tools

yum install  vim

yum install  telnet   

  

我看查看容器中的IP地址:

Docker 默认已经给我们分配了地址

  

退出后在查看我们本机的网桥:这里注意 interfaces 发生了变化

  

这是docker0: 在容器创建时,为连接容器创建的网络接口。

我们运行容器的时候也可以查看该网络接口:

  

修改docker0 的ip地址: 使用超级管理员权限
sudo ifconfig docker0  192.168.254.0  netmask 255.255.255.0

  

自定义网桥:

  • 用户定义的桥接器可在容器化应用程序之间提供更好的隔离和互操作性

连接到同一用户定义的网桥的容器会自动将所有端口相互暴露,并且不会向外界显示任何端口。这使得容器化应用程序可以轻松地相互通信,而不会意外地打开对外界的访问。

想象一下具有Web前端和数据库后端的应用程序。外部世界需要访问Web前端(可能在端口80上),但只有后端本身需要访问数据库主机和端口。使用用户定义的网桥,只需要打开Web端口,并且数据库应用程序不需要打开任何端口,因为Web前端可以通过用户定义的网桥访问它。

如果在默认网桥上运行相同的应用程序堆栈,则需要打开Web端口和数据库端口,并使用 每个的标记-p--publish标记。这意味着Docker主机需要通过其他方式阻止对数据库端口的访问。

  • 用户定义的桥接器在容器之间提供自动DNS解析

默认网桥上的容器只能通过IP地址相互访问,除非您使用被认为是遗留的--link选项。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。

想象一下与前一点相同的应用程序,具有Web前端和数据库后端。如果你打电话给你的容器webdb,Web容器可以在连接到数据库容器db,无论哪个码头工人托管应用程序堆栈上运行。

如果在默认桥接网络上运行相同的应用程序堆栈,则需要在容器之间手动创建链接(使用旧--link 标志)。这些链接需要在两个方向上创建,因此您可以看到这对于需要通信的两个以上容器而言变得复杂。或者,您可以操作/etc/hosts容器中的文件,但这会产生难以调试的问题。

  • 容器可以在运行中与用户定义的网络连接和分离

在容器的生命周期中,您可以动态地将其与用户定义的网络连接或断开连接。要从默认桥接网络中删除容器,您需要停止容器并使用不同的网络选项重新创建容器。

  • 每个用户定义的网络都会创建一个可配置的网桥

如果容器使用默认网桥,则可以对其进行配置,但所有容器都使用相同的设置,例如MTU和iptables规则。此外,配置默认桥接网络发生在Docker本身之外,并且需要重新启动Docker。

使用创建和配置用户定义的网桥 docker network create。如果不同的应用程序组具有不同的网络要求,则可以在创建时单独配置每个用户定义的网桥。

  • 默认桥接网络上的链接容器共享环境变量

最初,在两个容器之间共享环境变量的唯一方法是使用--link标志链接它们。用户定义的网络无法实现这种类型的变量共享。但是,有更好的方法来共享环境变量。一些想法:

  • 多个容器可以使用Docker卷装入包含共享信息的文件或目录。
  • 可以一起启动多个容器docker-compose,并且compose文件可以定义共享变量。
  • 您可以使用swarm服务而不是独立容器,并利用共享机密和 配置

连接到同一用户定义的网桥的容器有效地将所有端口相互暴露。对于可以访问不同网络上的容器或非Docker主机的端口,必须使用or 标志发布该端口。-p--publish

上面是docker 文档中的一段话:整体描述了docker 自定义网桥的用处。 

开始自定义网桥

我这里开启了一台新我们查看网络信息

Ifconfig

  

首先停止容器运行:

systemctl stop docker.service

  

停止docker0 默认网桥

sudo ip link set dev docker0 down

  

删除docker0 网桥

sudo ip link del dev docker0

  

上图中可以看到网桥已经删除成功:

创建新的网桥:并配置IP地址,并启动网桥

sudo brctl addbr docker1

sudo ip addr add 192.168.100.1/24 dev docker1

sudo ip link set dev docker1 up

  

配置使用自定义网桥:保存退出

vi /etc/docker/daemon.json

  

启动并运行一个容器:

systemctl start docker.service

docker run -d -it --name centos1 centos

进入容器中:

docker inspect -f {{.State.Pid}} centos1

nsenter --target 19745 --ipc --uts --mount --pid --net

  

安装ifconfig 命令并查看 容器IP

yum install net-tools

  

  查看网络

  

有不足之处 希望大家指出相互学习,

            本文原创:转载请注明出处 谢谢!

docker(4)docker的网络,自定义网桥的更多相关文章

  1. docker网络配置之自定义网桥

    使用特定范围的 IP (仅适用于v1.x)不适用于新版的v1.1x Docker 会尝试寻找没有被主机使用的 ip 段,尽管它适用于大多数情况下,但是它不是万能的,有时候我们还是需要对 ip 进一步规 ...

  2. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  3. 【Network】修改docker启动默认网桥docker0为自定义网桥

    自定义网桥 除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服 ...

  4. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...

  5. Docker入门篇(二)之docker的单主机网络

    Docker 安装时会自动在host上创建三个网络,我们可用 docker network ls命令查看: [root@localhost ~]# docker network ls NETWORK ...

  6. docker进阶——数据管理与网络

    一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...

  7. Docker进阶一:网络篇

    理解Docker0 查看本地ip ip addr [root@VM-0-6-centos ~]# ip addr #本机回环地址 1: lo: <LOOPBACK,UP,LOWER_UP> ...

  8. Docker实践(2)—虚拟网络

    1 docker(container)的虚拟网络 docker的虚拟网络结构: host创建一个虚拟bridge,每个container对应一个虚拟网络设备(TAP设备),与bridge一起构成一个虚 ...

  9. docker学习3-虚拟网络模式

    一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...

随机推荐

  1. Eeffective C++ 读书笔记( 32-38)

    条款三十二:确定你的public继承塑模出is-a关系 1.所谓最佳设计,取决于系统希望做什么事,包括现在和未来. 2.好的接口可以防止无效的代码通过编译,因此你应该宁可采取“在编译期拒绝企鹅飞行”的 ...

  2. javase---string类介绍01

    一.String类简介 java.lang.String类用于描述一个字符序列.String类是不可变对象的类.其对象一旦被创建,永远无法改变.但是对象的引用可以重新赋值.而且String类被fina ...

  3. app电量测试

    一.测试前准备 样本A:商家端2.6.4版本为基准样本(即旧版本): 样本B:商家端2.6.5版本(未正式上线,可找RD协助打包): 推荐Android 5.0及以上手机2台或多台(根据RD本次测试需 ...

  4. 【淘宝客】根据淘客联盟精选清单(淘宝天猫内部优惠券)随机显示淘宝天猫优惠券dome

    也许大家在生活中经常淘宝看到[淘宝天猫内部优惠券]的网站,或者在微博中经常有博主发券,让大家生活中购物便宜许多,作为一个站长,我们也希望自己的网站也能有这样的一个功能,现在就分享给大家,还是免后台哦. ...

  5. JS题目合集---新技术层出不穷,打好基础才是上策~

    在IT界中公司对JavaScript开发者的要求还是比较高的,但是如果JavaScript开发者的技能和经验都达到了一定的级别,那他们还是很容易跳到优秀的公司的,当然薪水就更不是问题了.但是在面试之前 ...

  6. RocketMQ源码 — 十、 RocketMQ顺序消息

    RocketMQ本身支持顺序消息,在使用上发送顺序消息和非顺序消息有所区别 发送顺序消息 SendResult sendResult = producer.send(msg, new MessageQ ...

  7. golang 1.8 优雅关闭

    // main.go package main import ( "fmt" "log" "net/http" "os" ...

  8. 关于MySQL死锁

    最近项目中遇到一个问题,使用Spring事务嵌套时,导致MySQL死锁.记录一下,时刻提醒自己. 场景如下, 事务嵌套, 最外层有默认事务, 嵌套一个独立事务, 独立事务和外部事务同时操作一张表.

  9. 浅谈HTTP协议

    1 HTTP概念 把握三个点: 1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80 2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事 ...

  10. js继承之组合继承(结合原型链继承 和 借用构造函数继承)

    在我的前两篇文章中,我们已经介绍了 js 中实现继承的两种模式:原型链继承和借用构造函数继承.这两种模式都存在各自的缺点,所以,我们考虑是否能将这二者结合到一起,从而发挥二者之长.即在继承过程中,既可 ...