一、什么是docker?
Docker是一个开发源代码软件项目,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层以及操作系统层虚拟化的自动管理机制。
简单来说,docker解决了那些痛点呢?
1、简化环境管理:
传统软件开发与发布环境复杂,配置繁琐。docker彻底解决了这个问题,例如:一键安装 Linux、一键安装mysql...
2、虚拟化更加轻量级:
docker是一种操作系统级别的虚拟技术,运行在操作系统之上的用户空间,所有的容器共用 一个系统内核甚至公共库,容器引擎提供了进程级别的隔离,让每个容器就像运行在单独的系 统之上,但是又能共享很多底层资源,更加轻量快速和易于管理。
3、程序的可移植性
二、docker和虚拟机的差异?
相同点:
1、都可以在不同主机上迁移
2、都具备root权限
3、都可以远程控制
4、都有备份,回滚操作
不同点:
1、docker在性能上有优势,可以轻易运行多个操作系统;虚拟机可以安装在任何操作系统, 但是性能不及容器。
2、配置:docker快速配置,一键配置;虚拟机配置时间长。
3、docker启动时间秒级;虚拟机启动时间分级
4、docker性能接近原生态;虚拟机性能弱于原生态。
三、docker应用场景
1、加速本地开发
2、自动打包和部署应用
3、创建轻量私有的PaaS环境
4、自动化测试和持续集成/部署
5、部署并扩展Web应用、数据库和后端服务器
6、创建安全沙盒
7、轻量级的桌面虚拟化
四、docker的三大核心组件
1、镜像
镜像算是一个只读的静态模板,它保存了容器需要的环境和应用执行的代码,可以将镜像 看成是容器的代码,代码运行起来后就成了容器,镜像和容器的关系也类似于程序和进程的 关系。
2、容器
容器是一个运行时环境,是镜像的一个运行状态,他是镜像执行的动态表现。
3、库
库是一个特定用户存储镜像的目录,一个用户可以建立多个库来保存自己的镜像。