1 容器与Docker
1.1 什么是容器
容器指的是容纳物料的以壳为主的装置。如以下就是一些容器:
- 放水果的水果盘
- 运行servlet技术的软件,如Tomcat、JBoss等。
1.2 什么是Docker
Docker是一个基于LXC(Linux Container)技术构建的容器引擎,基于GO语言开发的虚拟化技术。
它是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程与资源。
目前企业中主流的技术是把软件安装到Docker中进行使用(通常这些软件安装在linux/windows操作系统中)。
2 使用Docker的场景
2.1 Docker出现的原因
程序在虚拟机上运行软件很慢(运行两个操作系统)。
而docker把最耗系统资源的Guest OS层删除,使APP直接运行在HostOS的宿主操作系统上。
Docker并不是一个操作系统,它相当于一个命令的中转者,将Docker中运行软件的指令通过Docker交给宿主主机的操作系统来执行。
Docker是一个轻量级的虚拟运行环境,Docker Engine可以直接调用Host OS中的资源。
2.2 原理
如下是Docker Engine所在的位置。
有了Docker后,在部署环境时,只要在:
- 客户的每一台Linux服务器安装Docker,
- 然后制作项目的运行环境镜像,
- 把镜像拷贝到其他Linux服务器,
- 在其他Linux服务器中运行镜像产生的容器,
则所有服务器运行环境搭建即可完成。
2.3 优点
- 避免每台服务器都从0开始搭建环境。
- 使开发和运行环境一致,无差异(镜像文件打包了运行环境和程序代码)。
- 避免使用vmware造成电脑性能急剧下降的问题。
3 虚拟机和Linux容器的区别
- 虚拟机技术是虚拟出一整套硬件后并在其上运行一个完整的操作系统,在该操作系统上再运行所需要的应用进程。
- 容器内的应用进程直接运行于宿主机的内核中,容器内没有自己的内核,而且也没有进行硬件虚拟。容器比虚拟机更轻便,每个容器互相隔离,具有自己的文件系统,它们之间的进程不会相互影响,能区分各自的系统资源。
4 Docker的介绍
2013年,dotCloud公司将Docker(GO开发)项目开源,立即流行了。
docke是码头工人的意思,码头工人总是搬集装箱,docker就是辗转于多台计算机上的背着一堆容器(装着开发者的APP应用以及依赖环境)来运输的鲸鱼,就像它的logo一样。
5 容器镜像
镜像就是保存软件运行的当前环境状态的文件。
6 组成Docker的4个部分
- Docker Client客户端:使用若干Docker Client命令控制Docker Server服务端的行为。
- Docker Daemon守护进程:Docker运行的进程,相当于Docker Server服务端。
- Docker Image镜像:把程序代码和运行环境封装再一个文件里。
- Docker Container容器:运行后的镜像就是容器,相当于软件的运行环境。
7 Docker具有跨平台特性
8 Docker的优点
- 更快速的交付和部署:运维工程师收到镜像文件后直接启动,产生容器,不需要考虑配置软件运行环境的问题。
- 高效的部署和扩容:当容器的数量和性能不饿能支撑业务需要时,可以快速扩展,恒星增加容器数量来解决此问题。
- 更高的资源利用率:直接与Host OS宿主操作系统进行通讯,增加容器中软件的运行效率。
- 隔离运行环境:每一个Docker容器具有自己独有的进程,系统资源,容器之间不能共享容器内部的私有资源。但容器可以共享操作系统的公共资源,比如内存资源。
2017年初,Docker公司将原先的Docker项目改名为moby,并再次基础上创建了docker-ce和docker-ee,moby与docker-ce与docker-ee之间的关系:
(1)moby项目继承自原先的docker项目,只是改了名字,是社区维护的开源项目,任何人都可以再moby的基础上打造自己的容器产品。
(2)docker-ce是Docker公司维护的开源产品,是一个基于moby项目的免费容器产品。
(3)docker-ee是Docker公司维护的闭源商业产品,需要收费。