一、什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言开发,用于管理容器。使用docker我们可以将环境交给 Docker 来管理,当我们需要移植我们的产品的时候,就可以将环境整个的迁移到另一台主机上,而不像虚拟机一样,迁移一台虚拟机及其资源。
二、虚拟机和docker的区别
服务器虚拟化解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。
- 1、使用Docker容器和使用虚拟机在运行多个相互隔离的应用时对比,Docker要简洁很多;
- 2、Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。
- 3、虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。
- 4、虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。
- 5、传统的虚拟机,首先是虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;
- 6、Docker容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻巧了很多;
三、为什么用docker
我们知道一款产品从开发到上线,从开发环境到生成环境。作为开发和运维人员之间协作需要考虑很多问题,尤其是当我们的产品多版本迭代之后,不同环境之间的兼容就会成为一个大问题;
这时 Docker 的出现就解决了这一难题,Docker 的出现使我们开发的软件可以“带环境安装”,即安装的时候,可以把原始环境一模一样的的复制过来,不用在担心环境不一致导致“开发时可以正常运行,生成环境就会出问题”,“在我的机器上可以正常运行,在别人的机器上就不能运行”的问题了
四、docker的架构图和运行过程
注意:Docker本身并不是容器,它是一个管理容器的引擎。
五、docker的核心三要素
Docker的三个核心要素:镜像、容器、仓库,这三大要素构成了其生命周期。
镜像的概念:
Docker镜像就是一个只读的模板,可以用来创建docker容器。
一个镜像可以包含完整的操作系统环境,里面安装了mysql或用户需要的其他应用程序。
用户可以直接下载他人已经做好的镜像。
镜像获取的两种方式:1、到官方页面下载镜像 2、通过dockerfile文件构建
容器的概念:容器是从镜像创建来的运行实例,它可以被启动、停止、删除。每个容器都是相互隔离的、保证平台安全。
仓库的概念:仓库即是存放镜像文件的地方。
镜像与容器的关系类似与面向对象中的类和对象的关系。