转载:http://segmentfault.com/a/1190000000366923
几个月以前,红帽(Red Hat)宣布了在 Docker 技术上和 dotCloud 建立合作关系。在那
时候,我并没有时间去学习关于 Docker 的知识,所以在今天,趁着这个 30 天的挑战,
我决定去学习一下 Docker 究竟是怎样的。这篇博文并不是说以后怎么在 OpenShift 上
用 Docker 的。请阅读由 Mike McGrath 撰写的 "关于 OpenShift 和 Docker 的技术思
考"。也可以看看这个 Stackoverflow 的问题,了解一下 Docker 和 OpenShift 的差别。
什么是 Docker?
Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是
dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致
dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就相当于是加在
LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。
Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API
为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXC, cgroups 和 Linux 自
己的内核。和传统的虚拟机不同的是,一个 Docker 容器并不包含一个单独的操作系统,
而是基于已有的基础设施中操作系统提供的功能来运行的。这里有一个 Stackoverflow 的
答案,里面非常详细清晰地描述了所有 Docker 不同于纯粹的 LXC 的功能特性
Docker 会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包
到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了
程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机
环境等等。
Docker 由下面这些组成:
1. Docker 服务器守护程序(server daemon),用于管理所有的容器。
2. Docker 命令行客户端,用于控制服务器守护程序。
3. Docker 镜像:查找和浏览 docker 容器镜像。它也访问这里得到:
https://index.docker.io/
我为什么要关心这些?
Docker 之所以有用,是因为把代码从一个机器迁移到另一个机器经常是困难的。它尝试
去使得软件迁移的过程变得更加可信和自动化。Docker 容器可以移植到所有支持运行
Docker 的操作系统上。