【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了Docker的基础概念以及Docker的安装。
Docker是一个新的容器化的技术,它轻巧,且易移植,号称“build once, configure once and run anywhere(译者注:这个就不翻译了,翻译出来味道就没了)”。本文是Flux7的Docker系列教程的第一部分。请和这份教程一起学习和理解Docker有什么优势以及如何更好地使用它。
让我们一起来学习Docker。
本文主要涉及Docker的基础知识:Docker的特征、理念以及如何安装使用Docker。
Docker 特征
Docker有不少有趣的功能,通过本教程相信你会更好地理解它们。Docker的特性主要包括以下几点:
- 速度飞快以及优雅的隔离框架
- 物美价廉
- CPU/内存的低消耗
- 快速开/关机
- 跨云计算基础构架
Docker 组件与元素
Docker有三个组件和三个基本元素,读者可以快速浏览下面
这个视频来了解这些组建和元素,以及它们的关系。三个组件分别是:
Docker Client
是用户界面,它支持用户与Docker Daemon
之间通信。
Docker Daemon
运行于主机上,处理服务请求。
Docker Index
是中央registry,支持拥有公有与私有访问权限的Docker容器镜像的备份。
三个基本要素分别是:
Docker Containers
负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。
Docker Images
是一个只读模板,用来运行Docker容器。
DockerFile
是文件指令集,用来说明如何自动创建Docker镜像。
在讨论Docker组件和基本要素如何交互之前,让我们来谈谈Docker的支柱。Docker使用以下操作系统的功能来提高容器技术效率:
Namespaces
充当隔离的第一级。确保一个容器中运行一个进程而且不能看到或影响容器外的其它进程。
Control Groups
是LXC的重要组成部分,具有资源核算与限制的关键功能。
UnionFS
(文件系统)作为容器的构建块。为了支持Docker的轻量级以及速度快的特性,它创建了用户层。
如何把它们放在一起
运行任何应用程序,都需要有两个基本步骤:
- 构建一个镜像。
- 运行容器。
这些步骤都是从
Docker Client
的命令开始的。
Docker Client
使用的是Docker二进制文件。在基础层面上,
Docker Client
会告诉
Docker Daemon
需要创建的镜像以及需要在容器内运行的命令。当Daemon接收到创建镜像的信号后,会进行如下操作:
第1步:构建镜像
如前所述,
Docker Image
是一个构建容器的只读模板,它包含了容器启动所需的所有信息,包括运行程序和配置数据。
每个镜像都源于一个基本的镜像,然后根据Dockerfile中的指令创建模板。对于每个指令,在镜像上创建一个新的层面。
一旦镜像创建完成,就可以将它们推送到中央registry:
Docker Index
,以供他人使用。然而,
Docker Index
为镜像提供了两个级别的访问权限:公有访问和私有访问。你可以将镜像存储在私有仓库,Docker官网有私有仓库的套餐可以供你选择。总之,公有仓库是可搜索和可重复使用的,而私有仓库只能给那些拥有访问权限的成员使用。
Docker Client
可用于
Docker Index
内的镜像搜索。
第2步:运行容器
运行容器源于我们在第一步中创建的镜像。当容器被启动后,一个读写层会被添加到镜像的顶层。当分配到合适的网络和IP地址后,需要的应用程序就可以在容器中运行了。
如果你还是不太理解,先别急,在接下来的内容中我们将会和你分享很多的实战案例。
目前为止,我们已经介绍了Docker的基本概念,接下来,让我们一起安装Docker!
安装Docker:快速指南
下面让我们来看看如何在Ubuntu 12.04 LTS上安装Docker(译者注:在CentOS 6.5安装可以参考
这里):
- 检查APT系统的HTTPS兼容性。如果usr/lib/apt/methods/https文件不存在,请安装
apt-transport-https
程序包。
- 在本地添加Docker Repositor密钥。 Repository key: hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
- 添加Docker Repository到APT源列表。
- 安装lxc-Docker程序包。
sudo apt-get update sudo apt-get install lxc-docker
- 验证所安装的内容。
sudo docker run -i -t ubuntu /bin/bash