Docker容器网络

Docker有三种原生网络:none网络host网络bridge网络
先来学习一下bridge网络
首先使用ifconfig命令查看一下本机的网络设备:

从图中可以看见多出一个名为docker0的设备,这个docker0就是linux的虚拟网桥,docker的守护进程就是通过这个名为docker0的设备为docker容器提供网络连接的各种服务。
虚拟网桥:可以设置IP地址,相当于一个虚拟网卡,可以用于连接多个端口,可以构建一个局域网,可以简单的理解为二层的交换机,但两者并不等同。
Docker容器守护进程在容器启动时会自动创建连接网络的两端,一端是在容器中的网络设备,另一端时在docker运行的主机上创建一个名为veth*的接口用来实现docker0与容器的网络通信。

接下来来看一下docker中的网桥管理。
首先需要安装网桥管理工具bridge-utils

安装完成之后来查看一下网桥设备:

可以看到默认的虚拟网桥docker0,现在创建一个centos容器:
启动完容器发现ifconfig命令没有用,是因为ifconfig命令需要安装net-tools工具包。

安装net-tools工具包之后就可以使用ifconfig命令了,来查看一下容器的网络设备:

可以看到这里有个eth0,这就是容器创建时docker守护进程分配给容器的网络接口,用来连接docker0的,使容器在后台运行ctrl+P+Q,然后查看一下docker0上的情况。

可以看到interfaces(接口)下面多出了一个veth149ef6,这就是centos容器eth0的对端设备,用来将centos容器和docker0虚拟网桥进行通信的网络接口设备:

通过查看本机的网络设备也可以看到:

观察一下可以发现,容器的ip是由docker0虚拟网桥分配的:


那么是不是可以更改网桥的ip呢?当然是可以的。

通过ifconfig docker0 192.168.1.1 netmask 255.255.255.0命令将docker0的ip地址更改为了192.168.1.1,来验证一下:

但是这是临时修改,重启docker服务之后ip地址就会变回去。
这时再启动容器就会发现容器的IP变为192.168.1.0网段。

Docker容器学习与分享06的更多相关文章

  1. Docker容器学习与分享07

    Docker容器网络 在分享06中学完了bridge网络,接着学习none网络和host网络. Docker在安装时会在host上默认创建三个网络,分别是bridge.host.null. [root ...

  2. Docker容器学习与分享04

    Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...

  3. Docker容器学习与分享03

    Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...

  4. Docker容器学习与分享10

    Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...

  5. Docker容器学习与分享09

    Docker容器之间的相互通信 先新建两个不同的网段,就用分享08里的两个网段作为新建的网段. [root@promote ~]# docker network ls NETWORK ID NAME ...

  6. Docker容器学习与分享05

    Docker镜像操作 学完了一些最基本的操作之后,我学习了一些关于docker镜像的基本操作. 首先来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命 ...

  7. Docker容器学习与分享02

    1.docker容器的创建 首先运行一个centos容器,感受一下Docker容器的便捷 首先先看一下镜像仓库 发现仓库里没有镜像,也就是没有创建容器的模板,这时考虑从REPOSITORY中拉取镜像( ...

  8. Docker容器学习与分享01

    1.什么是容器? 容器技术是一种虚拟化的方案,与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器是直接运行在操作系统内核之上的用户空间. 所以容器虚拟化又 ...

  9. Docker容器学习与分享08

    Docker容器网络 Docker除了默认创建的三种网络外,还可以自定义网络. 首先创建一个bridge类型的网络,使用docker network create命令. [root@promote ~ ...

随机推荐

  1. Oracle基础语句练习记录

    1.往scott的emp表插入一条记录 insert into scott.emp(empno,ename,job) values(9527,'EAST','SALESMAN'); 2.scott的e ...

  2. .33-浅析webpack源码之doResolve事件流(5)

    file => FileExistsPlugin 这个事件流快接近尾声了,接下来是FileExistsPlugin,很奇怪的是在最后才来检验路径文件是否存在. 源码如下: FileExistsP ...

  3. 动态绑定数据至Html Table

    学习或是开发asp.net程序,如果你很不喜欢使用GridView,DataList或是Repeater控件去显示来自数据库的数据,你完全可以使用html的table来完成.今天Insus.NET还让 ...

  4. 呼叫WCF Service的方法出现Method not allowed异常

    asp.net mvc练习程序,经常性在家里电脑,笔记本或是公司的电脑之间拷贝与粘贴,如果忘记携带最新的练习程序,一些小功能只能重新写了.如前一篇<ASP.NET MVC呼叫WCF Servic ...

  5. .NET平台开源文档与报表处理组件包括Execel PDF Word等

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  6. 简明log4j配置教程

    先准备好log4j需要对应的开发包: apache-log4j-extras-1.2.17.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar 然后就是在项 ...

  7. 了解java虚拟机—非堆相关参数设置(4)

    非堆内存相关配置 -XX:PermSize 永久区初始大小 -XX:MaxPermSize 永久区最大大小 在JDK1.8中使用-XX:MxMetaspaceSize配置永久区最大大小 -Xss 线程 ...

  8. 大数据之 Hadoop学习笔记

    1 hadoop生态系统 hdfs 分布式文件系统 hadoop-hdfs-2.7.2.jar mapreduce 分布式计算框架 hadoop-mapreduce-client-app-2.7.2. ...

  9. 语音识别(ASR) 阿里云

    做语音识别这块的呢,国内领先的有科大讯飞,BAT这几家公司,鉴于使用科大讯飞的接口需要付费,腾讯云的语音识别申请了几天也没给通过,比较了一下阿里和百度的,个人觉得阿里云的好用一些,这篇博客来讲讲怎么讲 ...

  10. Linux常用基本命令(cat)

    cat命令 作用:连接多个文件并且打印到屏幕输出,或者重定向到其他文件,也可以用来查看显示单个文件,或者多个文件. 格式: cat [option] [file] 1,最简单的用法,直接跟文件名称,查 ...