Docker介绍
什么是docker
Docker
最初是 dotCloud
公司创始人 Solomon Hykes
在法国期间发起的一个公司内部项目,它是基于 dotCloud
公司多年云服务技术的一次革新。 在 2013 年底,dotCloud
公司决定改名为 Docker。Docker
最初是在 Ubuntu 12.04
上开发实现的;Red Hat
则从 RHEL 6.5
开始对 Docker
进行支持;Google
也在其 PaaS
产品中广泛应用 Docker
。
原理
Docker
使用 Google
公司推出的 Go 语言
进行开发实现,基于 Linux 内核的 cgroup
,namespace
,以及 OverlayFS
类的 Union FS
等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术
。由于 隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器
。它可以独立运行多种进程、多个应用,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。最初实现是基于 LXC
,从 0.7 版本以后开始去除 LXC
,转而使用自行开发的 libcontainer
,从 1.11 版本开始,则进一步演进为使用 runC
和 containerd
。
架构
runc
是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。containerd
是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。
Docker
在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker
技术比虚拟机技术更为轻便、快捷
Docker 和传统虚拟化方式的不同之处
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。
- 传统虚拟化
- Docker
总而言之: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
docker的好处
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势
-
更高效的利用系统资源
由于
容器不需要进行硬件虚拟以及运行完整操作系统
等额外开销,Docker
对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用
。 -
更快速的启动时间
传统的虚拟机技术启动应用服务往往需要
数分钟
,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级
的启动时间。大大的节约了开发、测试、部署的时间。 -
一致的运行环境
开发过程中一个常见的问题是
标签:容器,介绍,nginx,镜像,Docker,数据,docker From: https://www.cnblogs.com/zakun/p/docker-simple.html环境一致性问题
。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境
,确保了应用运行环境一致性,从而不会再出现 这段代码在我机器上没问题啊