docker 网络模式

一.Docker的四种网络模式 

    1.Docker在创建容器时有四种网络模式,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定。

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

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

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

      container模式,使用--net=container:容器名称或ID指定。(如:--net=container:30b668ccb630)

      1)bridge模式:docker网络隔离基于网络命名空间<Network Namespace>,在物理机上创建docker容器时会为每一个docker容器分配网络命名空间,并且把容器IP桥接到物理机的虚拟网桥上。

      2)none模式:此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置。

      docker run -itd  --net=none centos:6  /bin/bash


    3)host模式:此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,并且这个模式认为是不安全的。

      docker run -itd  --net=host --name host centos:6  /bin/bash


    4)container模式:此模式和host模式很类似,只是此模式创建容器共享的是其他容器的IP和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的IP是你所指定的那个容器IP并且端口也是共享的,而且其它还是互相隔离的,如进程等。

    docker run -itd  --net=container:565d6f23dada --name container centos:6  /bin/bash

二.为什么要选择桥接,docker容器要有独立的ip,而不是使用nat方式:

使用端口映射(NAT)的方式存在一个弊端,当多个容器都需要使用某个端口时或者host主机端口与容器端口冲突时(例如,host主机搭建了80的服务,两个容器也都搭建了80的服务,那个只有1个服务可以使用本机的80端口,其他服务都要映射为其他端口.

三.配置独立的ip地址:

1.修改网卡(宿主主机操作)

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-eth0.bak

cp ifcfg-eth0 ifcfg-br0

vim ifcfg-eth0

DEVICE=eth0

HWADDR=00:0C:29:DB:B2:28

TYPE=Ethernet

UUID=b2268aab-fa2e-49e9-bd67-2572f29e5790

ONBOOT=yes

BRIDGE=br0

BOOTPROTO=none

#IPADDR=192.168.1.179

#NETMASK=255.255.255.0

#GATEWAY=192.168.1.1

#DNS1=114.114.114.114

#DNS2=8.8.4.4

vim ifcfg-br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.1.179

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=114.114.114.114

DNS2=8.8.4.4

重启网卡或者服务器(如果发现没有修改的话,重启电脑,注意内核要在3.10以上)

2.docker配置(宿主主机中运行)

pipework是由Docker的工程师Jérôme Petazzoni开发的一个Docker网络配置工具

git clone https://github.com/jpetazzo/pipework

cp pipework/pipework /usr/local/bin/

运行docker

docker run -it --net=none --name docker_name  centos:6 /bin/bash

在宿主机上

rpm -Uvh https://repos.fedorapeople.org/openstack/EOL/openstack-grizzly/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm

pipework br0 docker_name 192.168.1.187/24@192.168.1.1  //制定路由

3.到docker中查看ip:

  ifconfig,其中一个网卡的IP就是以前我们配置的192.168.1.187。此时route已经被加上了!

4.如果想删除docker0网卡(可选操作):

  1)service docker stop

  2)ifconfig docker0 down

  3)brctl delbr docker0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • docker之容器通信 这节属于了解学习,算是烂尾,最后我也没找到合适的方式去固定容器ip,然后作为正式环境去跑,...
    道无虚阅读 5,537评论 1 7
  • pipework的做法是通过网桥使容器,宿主机在同一个网段中进行通信 实验环境: 一、基础环境配置,三台服务器均执...
    向上的路阅读 3,046评论 1 2
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,856评论 0 7
  • Docker入门 Docker命令官方示例 [toc] 1. Docker架构 1.1 Docker镜像与Dock...
    CaiGuangyin阅读 1,872评论 2 6
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,430评论 0 27