docker的概念(来自百度百科)
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker的作用
java语言解决跨平台问题,一次编译,处处运行;而docker解决跨服务器问题,一次打包,处处发布。
以往部署服务到不同服务器上,需要在这些服务器上都安装服务需要的依赖;docker可以将服务以及服务需要的依赖等一起打包,用户只需要拿到这个包就能直接使用该服务,及其方便。
docker架构
直接看这个来自百度百科的docker架构图
Clients:docker的客户端,使用docker Api与docker的守护进程进行通信;
docker machine:一个命令行工具,作用是简化docker安装,比如VirtualBox等;
Hosts:docker的宿主主机,一个物理服务器或者虚拟机,作用是执行docker守护线程和容器;
daemon:守护线程,一般在宿主主机后台运行,等待接收来自客户端的消息;
container:docker容器,可以独立运行一个或一组应用;
image:docker镜像,可以用来创建docker容器的模板;
Registries:docker镜像仓库,作用是保存镜像。
Docker与虚拟机的对比
对比项 | Docker | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千docker容器 | 一般几十个 |
隔离性 | 安全隔离 | 安全隔离 |
迁移性 | 优秀 | 一般 |
通过对比可以知道,docker是比虚拟机更加优异。
Docker的优缺点
优点:服务创建/部署更加方便;使用和管理成本低;能更加方便地进行迁移和扩展等;
缺点:只能在Linux(最好是64位的)服务器上运行,32位的linux、Windows等环境可能会出现问题。
如果有写的不对的地方,请大家多多批评指正,非常感谢!