初步了解docker容器的原理。如何安装以及应用,重点理解docker的虚拟网络部分
Docker
docker是时下十分流行的一种虚拟技术,以简单并且轻量级而闻名,简而言之即为一种虚拟容器。 笔者的理解就是可以装下各种开发应用的容器技术。通过本身的宿主机集成linux的虚拟化技术形成了docker。与宿主机共享内存,网络,存储等等。
docker的安装
docker的安装相对于其他的虚拟机管理系统简单的多,现在centos7已经集成,简单的yum命令行工具即可。 docker的安装相对于内核版本要求较高,官网要求内核版本大于3.8。然而其实不然,centos6且内核版本低于3.8也是可以安装的(笔者在centos6,内核版本为2.6.32的云主机上同样安装成功了)。具体操作步骤可以参考这篇文章,官方安装文档注意把centos/7/这里修改成/centos/6/即可。当然如果你是centos7直接yum安装
docker简单应用
- 1)启动docker服务
- 2)下载镜像,或者使用镜像制作工具自己制作
- 3)启动容器,进入容器创建应用
- 4)保存压缩容器,上传至docker_hub 具体步骤可以参考这片博客
Docker网络
简单的应用之后笔者最感兴趣的还是网络部分的工作原理,在网上去查了很多资料都还是比较少的。因为网络是docker比较薄弱的地方,在学习的过程中主要是参考这篇文章
docker网络工作方式:
目前docker网络有4种工作方式:
- 1)host模式,使用–net=host指定,即一般指定IP;
- 2)container模式,使用–net=container.NAME_or_ID,指定容器名或者容器ID;
- 3)none模式,使用–net=none指定;
- 4)bridge模式,使用–net=bridge指定,及一般的桥接模式。
以下是各种模式的简单理解
host模式
我们知道docker是采用linux的namespaces命令空间对网络进行虚拟化。 在host模式下,docker并不会为容器分配独立的namespaces,即不会对容器虚拟出网卡、IP等等。容器与宿主机共享一个namespaces,我们在使用的过程中感受不到网络的不同。不需要做任何的NAT转发。
container模式
container模式是在一个容器在另一个容器的基础上与其共享一个namespace,就不再是与宿主机共享了。这两个主机除了网络namespace上的共享,其他的诸如文件系统还是都是隔离起来的。而这两个容器的通信是靠宿主机lo网卡实现的。
none模式
none模式就像是一个刚刚安装好的操作系统什么都需要我们自己配置,在这种模式下,我们的容器拥有自己独立的namespace,这种模式下我们需要为容器独立的配置网卡的IP,路由等等。
bridge模式
此模式是docker的默认网络模式,会给我们的容器独立的namespace同时为他配置好IP,路由等信息。与现在许多虚拟机的管理原理都是一样的。
下一篇博客重点介绍bridge模式