docker(4)docker的网络,自定义网桥
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前端和数据库后端。如果你打电话给你的容器web和db,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的网络,自定义网桥的更多相关文章
- docker网络配置之自定义网桥
使用特定范围的 IP (仅适用于v1.x)不适用于新版的v1.1x Docker 会尝试寻找没有被主机使用的 ip 段,尽管它适用于大多数情况下,但是它不是万能的,有时候我们还是需要对 ip 进一步规 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- 【Network】修改docker启动默认网桥docker0为自定义网桥
自定义网桥 除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服 ...
- Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...
- Docker入门篇(二)之docker的单主机网络
Docker 安装时会自动在host上创建三个网络,我们可用 docker network ls命令查看: [root@localhost ~]# docker network ls NETWORK ...
- docker进阶——数据管理与网络
一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...
- Docker进阶一:网络篇
理解Docker0 查看本地ip ip addr [root@VM-0-6-centos ~]# ip addr #本机回环地址 1: lo: <LOOPBACK,UP,LOWER_UP> ...
- Docker实践(2)—虚拟网络
1 docker(container)的虚拟网络 docker的虚拟网络结构: host创建一个虚拟bridge,每个container对应一个虚拟网络设备(TAP设备),与bridge一起构成一个虚 ...
- docker学习3-虚拟网络模式
一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...
随机推荐
- 16个必须熟悉的linux服务器监控命令
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc. == 原文:16 Linux Server Monitoring Comman ...
- 【java错误】Non-terminating decimal expansion; no exact representable decimal result
问题描述 意思是“无法结束的除法表达式:没有精确的除结果”.当时输入的10/3,结果应该是3.3333....333. 下面这种处理方式有问题. BigDecimal num3 = new BigDe ...
- thinkphp 自动生成模块目录结构
要达到的目的 在application目录下创建自定义模块如admin,用命令行方式自动创建该目录及目录下默认结构 要运行的命令 > php think build --module admin ...
- 远程文件同步详解(Remote File Sync)
1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...
- Linux时间子系统之(一):时间的基本概念
专题文档汇总目录 Notes:Linux时间基准点:Linux时间和broken-down time(struct tm):不同精度的时间表示time_t.timeval.timespec. 原文地址 ...
- DCOS实践分享(4):如何基于DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)
这篇文章入选CSDN极客头条 http://geek.csdn.net/news/detail/71572 当前,要保证业务的市场竞争力,仅靠设计一个可用并且好看的产品,已经完全不能满足要求.全球消费 ...
- Python Redis 的安装
安装 可以去pypi上找到redis的Python模块: http://pypi.python.org/pypi?%3Aaction=search&term=redis&submit= ...
- 一个相对健壮的node 静态http服务器
先上代码,然后说说坑,算是一个总结,以后在mac上就用这个开启服务调试了,挺好.然后接着想写一个动态的返回页面的,刚好练手mv*的框架. var http = require('http'); var ...
- CentOS 7.2 关闭防火墙
CentOS7 的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本使用iptables不一样 1.关闭防火墙: systemctl stop f ...
- VMware下对Ubuntu进行扩充磁盘大小
今天用虚拟机的时候,发现虚拟机快满了,提示磁盘空间小,不得不扩充虚拟机空间.经过百度搜索,终于搞定了,记录如下 平台:VMware(10.0.3)+Ubuntu 14.04(32bit) 1.选择VM ...