Docker(一):基础概念入门
Docker 概述
现版本的 Docker 相较于较前的老版本,已经有了两个版本:
- Docker Community Edition (CE,社区版)
- Docker Enterprise Edition (EE,企业版)
这就像 JavaSE 和 JavaEE,虽然官方区分了标准版和企业版,但我们在实际开发中基本上都使用的是 Java 标准版。所以这里,我们也不需要纠结,选用 Docker CE 版本就够了。
不论是对于企业,还是对于个人,免费永远都是应该被最先考虑的,只有当免费版无法满足我们的需求,或是自己通过对免费版做个性化开发时过于复杂,成本过高,才会考虑直接使用付费的企业版。
我们常说的 Docker 是指 Docker 引擎(Engine),它是一个客户端 - 服务器应用程序,主要组件有:
- Docker Daemon —— 服务器,Docker 守护进程(
dockerd
命令) - Docker REST API —— 和 Docker Daemon 交互的 REST API
- Docker CLI —— 客户端,命令行界面(
docker
命令)
关于 Docker CE
Docker CE 有三种更新渠道:stable、test和nightly:
- Stable:提供一般可用性的最新版本
- Test:在一般可用性之前准备好测试的预发布版本
- Nightly:用于下一个主版本发布的当日最新构建版本
Docker 能做什么
Docker 能为我们带来以下极其明显的优势:
- 快速、一致地交付应用程序(容器非常适合持续集成和持续交付(CI(continuous integration) / CD( continuous delivery))工作流程)
- 响应式部署和扩展
- 在同一硬件上运行更多工作负载
Docker 架构
Docker 概念
Docker 是开发人员和系统管理员用容器开发、部署和运行应用程序的平台。通过 Docker,我们可以实现容器化。
-
容器化
- 使用 Linux 容器部署应用程序。
容器化的流行得益于容器:
- 灵活性:即使是最复杂的应用程序也可以容器化
- 轻量级:容器能有效利用并共享主机内核
- 可互换:可以在运行中部署更新和升级
- 可移植:本地构建,部署到云,在任何地方运行
- 可扩展:可以增加并自动分发容器副本
- 可堆叠:可以在运行中堆叠服务
镜像和容器
首先,我们要知道容器是通过运行镜像来启动的。而镜像和容器两个名词,又是我们在 Docker 中最常提及的,故我们需要对这两个名词有个清晰的认识。
-
镜像
- 一个可执行包,包含运行应用程序所需的所有内容——代码,运行环境,库,环境变量和配置文件。 容器
- 是镜像的运行时实例——镜像执行后在内存中的变化(即带有状态的镜像,或用户进程)。
容器和虚拟机
对于刚接触 Docker 的新手来而,我们经常会拿虚拟机来对比容器进行讲解,因为这样更容易入门。并且如果从所提供的功能上面来说,容器和虚拟机确实极其相似,但他们却又存在明显的区别。
容器:在 Linux 上本地运行,并与其他容器共享主机的内核。它运行一个离散的进程,不占用比任何其他可执行程序更多的内存,从而使它变得轻量级。
虚拟机(virtual machine,VM):通过虚拟机管理程序虚拟访问主机资源,以运行一个完整的“客户机”操作系统。通常,VM 提供的环境所占用的资源要比大多数应用程序所需要的资源更多。
使用 Docker,扩展应用程序只是一个运行新的可执行文件的问题,而不是运行繁重的 VM 主机。