1.1.1 Docker 是什么?
Docker 是一个开源的容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何 Linux 机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或操作系统。Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版)和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
官方网站:
Docker 官网:Home - Docker
Docker 的 github 地址:GitHub - moby/moby: Moby Project - a collaborative project for the container ecosystem to assemble container-based systems Docker hub 官网:Docker Hub
Dockerhub:Dockerhub 是 docker 官方的镜像存储站点,其中提供了很多常用的镜像供用户下载,如 ubuntu, centos 等系统镜像。通过 dockerhub 用户也可以发布自己的 docker 镜像,为此用户需要注册一个账号,在网站上创建一个 docker 仓库。
Docker 核心技术
-
Namespace — 实现 Container 的进程、网络、消息、文件系统和主机名的隔离。
-
Cgroup — 实现对资源的配额和度量。
注:Cgroup 的配额,可以指定实例使用的 cpu 个数,内存大小等。就像如下图,vmware 虚拟机 中的硬件配置参数。
1.1.2 Docker 优缺点
优点
-
快、小 比虚拟机小,比虚拟机快,管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位。 Docker 启动一个容器实例时间很短,一两秒就可以启动一个实例。
-
敏捷 像虚拟机一样敏捷,而且会更便宜,在 bare metal(裸机)上布署像点个按钮一样简单。
-
灵活 将应用和系统“容器化”,不添加额外的操作系统,
-
轻量 你会拥有足够的“操作系统”,仅需添加或减小镜像即可。在一台服务器上可以布署 100~1000 个 Containers 容器。
-
便宜 开源的,免费的,低成本的。由现代 Linux 内核支持并驱动。轻量的 Container 必定可以在一个物 理机上开启更多“容器”,注定比 VMs 要便宜。
-
对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。
-
开发人员并不关心具体哪个 Linux 操作系统 使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。 然后,在部署时一切是完全一样的,因为一切都是基于 Docker Image 的运行。
-
Google,微软,亚马逊,IBM 等都支持 Docker。
-
Docker 支持 Unix/Linux 操作系统,也支持 Windows 或 Mac
缺点
-
Docker 部署应用的时候,并不包含数据。日志,数据库等通常应放在 Docker 容器外。 一个容 器的镜像通常都很小,不适合存大量数据,存储可以通过外部挂载的方式使用。比如使用:NFS, ceph、glusterfs、ipsan,MFS 等 一句话:docker 只用于计算,存储交给别人。
-
所有容器共用 linux kernel 资源,资源能否实现最大限度利用,所以在安全上也会存在漏洞。