一、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. SO从 \u 这样的字符串 构建对象

    ShowMessage(SO('\u4F18\u8D28\u670D\u52A112').AsString); 正确 得到 优质服务12 ShowMessage(so( 个数字,后面的中文未能解析出.

  2. wp8.1 Study11:APP里文件读写和使用XML和Json序列化

    一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ...

  3. 从协议VersionedProtocol开始1

    Phase 0: Make a plan You must first decide what steps you're going to have in your process. It sound ...

  4. Object Oriented Programming python

    Object Oriented Programming python new concepts of the object oriented programming : class encapsula ...

  5. PHP及Javascript 正则判断中文(转)

    UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的.比如: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test( ...

  6. greenDao 学习之坑 "java-gen" 目录下的类不能引用

    由于公司最近的项目需要频繁地操作数据库,所以选用greenDao. 网上搜了一 大堆教程,我卡在java工程运行后生成的几个类不能引用了. 看了一下区别,教程的java-gen 目录是蓝色的小框框 , ...

  7. iphone判断当前网络连接类型

    eachability只能区分出无网络.wifi和wwan(2G&2.5G&3G)类型的网络连接类型,只需重构networkStatusForFlags方法,即可详细区分出2G与3G网 ...

  8. JVM-class文件完全解析-方法表集合

    方法表集合 前面的魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引,接口索引集合,字段表集合,那么再接下来就是方法表了.   方法表的构造如同字段表一样,依次包括了访问标志(a ...

  9. Cocoa Drawing

    Graphics Contexts Graphics contexts are a fundamental part of the drawing infrastructure in Cocoa ap ...

  10. Ogre碰撞检测

    转自:http://blog.csdn.net/weiqubo/article/details/7108363 Ogre采用树桩管理场景中的各种"元素"(摄像机.灯光.物体等),所 ...