虚拟化技术—docker容器—网络模式

Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。这里先介绍Docker自身的4种网络工作方式。

1、 Docker的4种网络模式

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

§ host模式,使用--net=host指定。

§ container模式,使用--net=container:NAME_or_ID指定。

§ none模式,使用--net=none指定。

§ bridge模式,使用--net=bridge指定,默认设置。

下面分别介绍一下Docker的各个网络模式。

1.1、host模式

Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

例如,我们在192.168.137.100/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用192.168.137.100/24即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

1.2、container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

1.3、none模式

这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

1.4、bridge模式

bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。

当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,Docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段,并将172.17.42.1/16分配给docker0网桥。下面是拓扑图:

时间: 2024-08-07 04:33:55

虚拟化技术—docker容器—网络模式的相关文章

初识Docker容器网络模式

Docker容器4种网络模式基于docker run创建docker容器时,可使用--net选项指定容器网络模式,Docker网络模式有:1).None模式不为容器配置任何网络.--network none # docker run -it --network none busybox:latest Unable to find image 'busybox:latest' locally latest: Pulling from library/busybox ee153a04d683: Pu

虚拟化技术—docker容器—PIPEWORK解读与实践

本文通过3个样例 -- 将Docker容器配置到本地网络环境中.单主机Docker容器的VLAN划分.多主机Docker容器的VLAN划分,演示了如何使用pipework帮助我们进行复杂的网络设置,以及pipework是如何工作的. 1.pipework的使用以及源码分析 Docker自身的网络功能比较简单,不能满足很多复杂的应用场景.因此,有很多开源项目用来改善Docker的网络功能,如pipework.weave.flannel等.这里,就先介绍一下pipework的使用和工作原理. pip

虚拟化技术—docker容器—安装篇

核心概念 1. 镜像 是一个只读的模板类似于安装系统用到的那个iso文件我们通过镜像来完成各种应用的部署. 2. docker容器 镜像类似于操作系统而容器类似于虚拟机本身.它可以被启动.开始.停止.删除等操作每个容器都是相互隔离的. 3. docker仓库 存放镜像的一个场所仓库分为公开仓库和私有仓库. 最大的公开仓库是Docker hubhub.docker.com国内公开仓库http://dockerpool.com/ 一.安装 centos6 上安装(6.5之前版本需要升级一下 yum

虚拟化技术—docker容器—管理篇

一.我们怎么更方便的进去已经start的容器呢? nsenter:可以通过这个命令进去docker的images里 首先获取一个容器的id: docker inspect --format " {{.State.Pid}}" centos_with_nettools 获取一个id 10592 nsenter --target 10592 --mount --yts --ipc --net 这样就进去了,当然这样很麻烦,所以可以写一个脚本: cat in.sh CNAME=$1 CPID

虚拟化技术—docker容器—Dockerfile篇

什么是Dockerfile? 按照平时,我们都需要先让一个容器跑起来,然后进去搭建制定自己的服务,那有没有更简洁的方法呢?Dockerfile就是为了更方便的制定容器的. 首先先看Dockerfile里的一些定义,这里从网上截了个图,比较形象: 创建目录: 要先把需要的软件包放在同一个目录下 编写Dockerfile,这里要特别提醒,Dockerfile编写需要非常注意空格!!! vim Dockerfile 添加: # This is My first Dockerfile # Version

虚拟化技术—docker容器—web UI篇

docker官方提供了一个web UI界面管理容器和镜像,名为:shipyard 先修改一下配置文件 vim /etc/sysconfig/docker 添加: other_args="-H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock" 注:centos7使用OPTIONS="-H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock" 重启: /etc/init.d/

Docker:网络模式详解

Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .host.Container host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口. Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP.端口范围. None:该模式关

浅析IRF虚拟化技术增强企业网络架构的弹性

浅析IRF虚拟化技术增强企业网络架构的弹性  [摘要]随着"云"时代到来和各种虚拟化技术日趋成熟,对传统企业网络架构提出新挑战.例如:在不破坏企业原有网络架构和资产投入情况下,可以为企业网络提供更好的扩展性,其中包括简化管理.简化网络运行.降低整体投入成本.扩展端口密度和带宽容量.保护用户投资,使企业网络具备高可用性和持续的.不间断的运行效果.为了达到此效果,可利用H3C的IRF虚拟化技术在企业网络架构中增强弹性,现浅析如下. 关键词:云时代.企业网络.虚拟化技术.持续不间断.IRF.

两台主机间docker容器网络互通

服务器1: 网络172.30.0.0/16 服务器2: 网络172.31.0.0/16 服务器1和服务器2上的docker容器网络之间是无法互通的,如果需要互通,需要做以下配置: 服务器1上执行: iptables -I DOCKER-USER -i br-88bd505e153f -o eth0 -j ACCEPT iptables -I DOCKER-USER -i eth0 -o br-88bd505e153f -j ACCEPT br-88bd505e153f是服务器1上docker的网