Docker容器学习与分享06
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的更多相关文章
- Docker容器学习与分享07
Docker容器网络 在分享06中学完了bridge网络,接着学习none网络和host网络. Docker在安装时会在host上默认创建三个网络,分别是bridge.host.null. [root ...
- Docker容器学习与分享04
Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...
- Docker容器学习与分享03
Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...
- Docker容器学习与分享10
Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...
- Docker容器学习与分享09
Docker容器之间的相互通信 先新建两个不同的网段,就用分享08里的两个网段作为新建的网段. [root@promote ~]# docker network ls NETWORK ID NAME ...
- Docker容器学习与分享05
Docker镜像操作 学完了一些最基本的操作之后,我学习了一些关于docker镜像的基本操作. 首先来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命 ...
- Docker容器学习与分享02
1.docker容器的创建 首先运行一个centos容器,感受一下Docker容器的便捷 首先先看一下镜像仓库 发现仓库里没有镜像,也就是没有创建容器的模板,这时考虑从REPOSITORY中拉取镜像( ...
- Docker容器学习与分享01
1.什么是容器? 容器技术是一种虚拟化的方案,与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器是直接运行在操作系统内核之上的用户空间. 所以容器虚拟化又 ...
- Docker容器学习与分享08
Docker容器网络 Docker除了默认创建的三种网络外,还可以自定义网络. 首先创建一个bridge类型的网络,使用docker network create命令. [root@promote ~ ...
随机推荐
- UIKit 框架之WebView
// // ViewController.m // UIWebView // // Created by City--Online on 15/5/18. // Copyright (c) 2015年 ...
- c++语言对c的扩充
1.命名空间的使用 参见下列链接:http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html 需要注意的地方:如果使用了命名空间s ...
- @JsonProperty和@JsonAlias的区别
@JsonProperty这个注解提供了序列化和反序列化过程中该java属性所对应的名称@JsonAlias这个注解只只在反序列化时起作用,指定该java属性可以接受的更多名称 public stat ...
- MVC初级知识之——View与Controller的讲解
Controller是MVC中比较重要的一部分.几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据.在ASP.NET MVC Preview5中,将原来的Controller类一分为二 ...
- C++中的 CONST 含义(从#define 到 CONST 的转变)
const 与define 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些.#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似 ...
- 跨域CORS 头缺少 'Access-Control-Allow-Origin'
今天遇到一个跨域的问题找了好久的资料错误如下: 解决之后: 控制层 加上这两行代码就好啦: @RequestMapping(value = "",method = RequestM ...
- Android - 网络基础
Android网络编程(一)HTTP协议原理 Android网络请求心路历程 HttpURLConnection和HttpClient对比: http://blog.csdn.net/guolin_b ...
- jq插件写法
如今做web开发,jQuery 几乎是必不可少的,同时jquery插件也是不断的被大家所熟知,以及运用.最近在搞这个jquery插件,发现它的牛逼之处,所以讲一讲jQuery插件的写法以及使用 (f ...
- JQuery 节点监听
DOMSubtreeModified: 在DOM结构发生任何变化的时候.这个事件在其他事件触发后都会触发: $(".attr_box").bind("DOMSubtree ...
- css改变input显示的样式
设置input宽高,边框大小颜色,背景颜色,字体颜色,字体大小,背景图片,去除蓝色边框. input{width:80px ;height:30px;border:1px solid red;colo ...