一、Docker的四种网络模式(host、container、none、bridge)

1、 host模式,使用docker run时使用--net=host指定,docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip

# docker run -it --rm --net=host httpd bash

2、container模式,使用--net=container:container_id/container_name多个容器使用共同的网络,看到的ip是一样的

3、none模式,使用--net=none指定:这种模式下不会配置任何网络

4、bridge模式,使用--net=bridge指定,默认模式,不用指定,默认就是这种模式,这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式,同一个宿主机上的所有容器会在同一个网段下,相互之间可以通信

二、外部访问容器(端口映射)

1、创建一个容器

# docker run -itd  httpd bash

2、进入到该容器并且安装httpd服务,然后启动服务

# docker exec -it 3e7 bash

# yum -y install httpd

# /usr/sbin/httpd

3、把该容器生成一个新的镜像

# docker commit -m "httpd-server" -a "fansik" 3e7 httpd

4、使用新镜像创建容器,并制定端口映射

# docker run -itd -p 5123:80 httpd bash

5、进入容器,启动httpd服务

# docker exec -it 0d6 bash

# /usr/sbin/httpd

6、编辑个页面

# vi /var/www/html/index.html

随便写点东西就可以

7、退出容器测试

# curl localhost:5123

-p后面也支持ip:port:ip:port的格式,比如:

-p 127.0.0.1:8080:80

也可以不写本地端口,只写ip,这样会随意分配一个端口:

-p 127.0.0.1::80

三、容器互联

下载一个mysql的镜像

# docker pull mysql

新建一个容器名字叫mysql

# docker run -itd -p 3306:3306 --name mysql mysql bash

再新建一个容器,并和mysql互联

# docker run -itd -p 1725:80 --name web --link mysql:mysql httpd bash

在web上于女性env命令可以查看到关于mysql的环境变量

四、配置桥接网络

centos7的配置方法:

1、为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求,这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以啦。

2、安装pipework

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

cp ~/pipework/pipework /usr/local/bin

3、开启一个容器:

docker run -itd --net=none --name fansik centos /bin/bash

4、# pipework br0 fansik 10.10.10.202/24@10.10.10.201

10.10.10.202为容器ip,@后面的ip为宿主机的ip

5、# brctl addif br0 eth0

eth0为宿主机的网卡,这一步为把br0和eth0桥接起来

6、# docker exec -it fansik /bin/bash

进去后ifconfig查看就可以看到新添加的ip

centos6的配置方法:

1、配置网卡信息

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-eth0 ifcfg-br0

# vim ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

BRIDGE=br0

# vim ifcfg-br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.201

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS1=192.168.1.1

重启网卡:/etc/init.d/network restart

2、安装pipework

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

cp ~/pipework/pipework /usr/local/bin

3、开启一个容器:

# docker run -itd --net=none --name fansik httpd bash

4、升级iproute否则创建桥接网络是会报错:Object "netns" is unknown,try "ip help"

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

5、# pipework br0 fansik 192.168.1.250/24  //为容器添加ip

6、 # docker exec -it fansik bash //进到容器用ifconfig命令就可以看到新添加的ip了

Docker网络管理的更多相关文章

  1. Docker网络管理机制实例解析+创建自己Docker网络

    实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...

  2. docker 实践十:docker 网络管理

    本篇是关于 docker 网络管理的内容,同时也包含了 docker 网络的高级应用. 注:环境为 CentOS7,docker 19.03. docker 网络基础 docker 网络模型 在 do ...

  3. Docker 网络管理及容器跨主机通信

    1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个. ...

  4. Docker网络管理-外部访问容器

    注意:这里使用的方法是端口映射,需要说明的是端口映射是在容器启动的时候才能完成端口映射的. 1,搭建1个web服务器,让外部机器访问. docker run -itd centos /bin/bash ...

  5. Docker系统六:Docker网络管理

    Docker网络 I. Docer的通信方式 默认情况下,Docker使用网桥(brige)+ NAT的通信模型. Docker启动时会自动创建网桥Docker0,并配置ip 172.17.0.1/1 ...

  6. 006.Docker网络管理

    一 docker网络模式 Docker使用Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Name ...

  7. Docker 网络管理

    网络模式 容器网络访问原理 桥接宿主机网络和配置固定IP地址 Docker 支持五种网络模式: 1.网络模式: --net  1.1 bridge  默认网络,Docker启动后默认创建一个docke ...

  8. ubuntu-docker入门到放弃(五)docker网络管理

    查看docker宿主机的网卡信息我们会发现,有一个docker0的网卡,这个网卡就是用于跟docker容器进行通讯的,这个网段跟我们docker容器的网段是一样的: #ifconfig docker容 ...

  9. Docker 核心技术之网络管理

    为什么需要Docker网络管理 容器的网络默认与宿主机.与其他容器都是相互隔离. 容器中可以运行一些网络应用(如nginx.web应用.数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么 ...

随机推荐

  1. Android计算时间差

    想要写个根据消耗时长来确定开始结束时间的小工具,发现Android处理时间上有点累,可能是我没找到合适的方法吧,先把我的解决办法贴出来,有好的解决方法还希望提醒一下: 1.根据时间字符串获取毫秒数 p ...

  2. 从协议VersionedProtocol开始

    VersionedProtocol协议是Hadoop的最顶层协议接口的抽象:5--3--3共11个协议,嘿嘿 1)HDFS相关 ClientDatanodeProtocol:client与datano ...

  3. Spring依赖关系

    在Spring中,各个模块的依赖关系通过简单的IoC配置文件进行描述,使这些外部化的信息集中并且明了,我们在使用其他组件服务时,只需要去配置文件中了解和配置这些依赖关系即可,也就是说这里关心的是接口, ...

  4. C++二叉查找树实现及转化为双向链表

    二叉树首先要有树节点 template<class T> class BinaryNode { public: T element; BinaryNode *left; BinaryNod ...

  5. 深入理解mybatis参数

    这个的话我是看的别人的文章,感觉很好: http://blog.csdn.net/isea533/article/details/44002219

  6. JS学习第一课

    1.js 按照编写顺序执行 2.输出使用document.write. 3.申明数组 var array = [1,2,3,5] ;  var arrStr = ["sgsg",& ...

  7. 深入C#数据类型小部分第二章

    值类型和引用类型C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 数组的元素,不管是引用 ...

  8. js库之art.dialog

    自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切 ...

  9. poj2631 树的直径 + bfs

    //Accepted 492 KB 0 ms //树的直径 bfs #include <cstdio> #include <cstring> #include <iost ...

  10. [UIImage resizableImageWithCapInsets:]使用注意

    转自:http://www.cnblogs.com/scorpiozj/p/3302270.html 最近在sae上搭建了个wp,因为深感自己前端的东西缺乏,所以想依次为契机,学习一下.本文是从个人的 ...