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前端和数据库后端。如果你打电话给你的容器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

  

  查看网络

  

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

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

原文地址:https://www.cnblogs.com/szlblog/p/10661078.html

时间: 2024-10-07 23:13:01

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

docker网络配置之自定义网桥

使用特定范围的 IP Docker 会尝试寻找没有被主机使用的 ip 段,尽管它适用于大多数情况下,但是它不是万能的,有时候我们还是需要对 ip 进一步规划.Docker 允许你管理 docker0 桥接或者通过-b选项自定义桥接网卡,需要安装bridge-utils软件包. 基本步骤如下: ensure Docker is stopped # 确保 docker 的进程是停止的 create your own bridge (bridge0 for example) # 创建自定义网桥 ass

docker的4种网络模式

关于docker网络模式有四种,内容如下,至于内容从来哪的,网上一大把呢.也不知道是谁的. Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: ·host模式,使用--net=host指定. ·container模式,使用--net=container:NAME_or_ID指定. ·none模式,使用--net=none指定. ·bridge模式,使用--net=bridge指定,默认设置.

Docker Network Configuration 高级网络配置

Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the host machine. It randomly chooses an address and subnet from the private range defined by RFC 1918 that are not in use on the host machine, and assign

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

Docker 安装时会自动在host上创建三个网络,我们可用 docker network ls命令查看: [[email protected] ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 0164da7ee66a bridge bridge local a4a5d0b84564 host host local df2c5c066a6a none null local 1.host模式 host模式,使用docker run 时,使用--

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

用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Volume (数据卷) (2)Data Volume Dontainers --- 数据卷容器 Data Volume ---数据卷 Data Volume 本质上是 Docker Host 文件系统中的目录或文件,使用类似 与 Linux 下对目录或者文件进行 mount 操作.数据卷可以在容器之间共享 和重用,对

docker学习笔记3 - 网络配置

参考: http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-practice http://www.oschina.net/translate/docker-network-configuration host 模式 配置 --net=host 原理 docker使用linux的namespace进行资源隔离,支持CPU namespace,network namesapce等.

除了默认的docker0网桥,启动Docker服务怎么指定使用的网桥

自定义网桥 除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服务已经运行,那需要先停止服务,并删除旧的网桥. $ sudo service docker stop $ sudo ip link set dev docker0 down $ sudo brctl delbr docker0 然后创建一个网桥 bridge0. $ sudo brctl addbr

微服务Docker化注册中心网络处理

微服务Docker化 docker网络有三种模式,可以在启动时通过--net=来指定 --net=bridge 默认选项,用网桥的方式来连接docker容器. --net=host docker跳过配置容器的独立网络栈.本质上来说,这个参数告诉docker不去打包容器的网络层.当然,docker 容器的进程仍然被限制在它自己独有的文件系统.进程列表以及其他资源中.一个快速命令 ip addr 将像你展示docker的网络,它是建立在docker 宿主主机上的,有完整的权限去访问宿主主机的网络接口

docker学习3-虚拟网络模式

一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式. 要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方.先来一张图,通过这张图就很容易看出这4种方式的区别: NAT:Net