# Docker入門教程(一)介紹
> 【編者的話】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有三個組件和三個基本元素,讀者可以快速瀏覽下面[這個視頻](https://www.youtube.com/watch?v=gNP9vJ3gMDo&feature=youtu.be)來了解這些組建和元素,以及它們的關系。三個組件分別是:
* `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的輕量級以及速度快的特性,它創建了用戶層。
### 如何把它們放在一起
運行任何應用程序,都需要有兩個基本步驟:
1. 構建一個鏡像。
2. 運行容器。
這些步驟都是從`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安裝可以參考[這里](https://github.com/llitfkitfk/docker-tutorial-cn)):
1. 檢查APT系統的HTTPS兼容性。如果usr/lib/apt/methods/https文件不存在,請安裝`apt-transport-https`程序包。
2. 在本地添加Docker Repositor密鑰。?Repository key: hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
3. 添加Docker Repository到APT源列表。
4. 安裝lxc-Docker程序包。?`sudo apt-get update?sudo apt-get install lxc-docker`
5. 驗證所安裝的內容。?`sudo docker run -i -t ubuntu /bin/bash`
> 出處:http://dockone.io/article/101
> 原文鏈接:[Part 1: Introduction](http://blog.flux7.com/blogs/docker/docker-tutorial-series-part-1-an-introduction)(翻譯:[田浩浩](https://github.com/llitfkitfk)?審校:李穎杰)