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 ...
随机推荐
- IAAS-虚拟化技术组件介绍
虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正.
- Spring Boot 发送邮件
需求 最近因为业务的变更,需要对老用户进行发送邮件处理.目前市面上也有很多代发邮件的接口,可以接入.由于量不是特别大,放弃了这个途径.改用我们自己通过 smtp 发送邮件来处理. 技术选择 Java ...
- hyper-v 安装Centos及网络配置
新安装的Centos系统默认情况下是不能上网的,需要经过相应的配置:选择对应的虚拟机,点击"虚拟交换机管理器": 设置hyper-v上的网络及分配cpu.内存.磁盘等资源. 安装C ...
- mysql 从一个表中查数据,插入另一个表
其实很简单,只是为了忘记,做个记录,用的时候方便. 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指 ...
- Vue数据双向绑定原理及简单实现
嘿,Goodgirl and GoodBoy,点进来了就看完点个赞再go. Vue这个框架就不简单介绍了,它最大的特性就是数据的双向绑定以及虚拟dom.核心就是用数据来驱动视图层的改变.先看一段代码. ...
- Linux下解压后缀名为".tar.xz"的文件
作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=576 1 解压".xz" xz -d your_file_name.tar.xz 注:运行上述命令后 ...
- 解决VMware虚拟机报错“无法连接MKS:套接字连接尝试次数太多,正在放弃”
1.错误描述 在VMware中打开虚拟机时报错: "无法连接MKS:套接字连接尝试次数太多,正在放弃" 物理机操作系统: Windows 7 虚拟机操作系统: Kali Linux ...
- Spring Security 实战:QQ登录实现
准备工作 1.在 QQ互联 申请成为开发者,并创建应用,得到APP ID 和 APP Key.2.了解QQ登录时的 网站应用接入流程.(必须看完看懂) 为了方便各位测试,直接把我自己申请的贡献出来:A ...
- git学习(持续踩坑中🤣)
https://segmentfault.com/q/1010000002457936 常见指令: 一.创建版本库 $ mkdir learngit 创建文件夹 $ cd learngit 进入文件夹 ...
- python的加、减、乘、除、取整、取余计算
加法: 输入以下代码: >>>1+1 >>>1.0+1 减法: 输入以下代码: >>>1-2 >>>1.0-2 乘法: 输入以下 ...