translate image into traditional chinese

This commit is contained in:
a504082002
2014-11-19 00:55:23 +08:00
parent 1d0a49ca31
commit 423781aec5
7 changed files with 76 additions and 76 deletions

View File

@@ -1,10 +1,10 @@
# Docker # Docker
在之前的介中,我知道像是 Docker 的三大件之一。 在之前的介中,我知道像是 Docker 的三大件之一。
Docker 行容器前需要本地存在对应的镜像,如果像不存在本地Docker 会从镜像仓库下载(默是 Docker Hub 公共注册服务器中的仓库)。 Docker 行容器前需要本地存在對應的鏡像,如果像不存在本地Docker 會從鏡像倉庫下載(默是 Docker Hub 公共註冊服務器中的倉庫)。
本章将介绍更多关于镜像的容,包括: 本章將介紹更多關於鏡像的容,包括:
* 从仓库获取镜像; * 從倉庫獲取鏡像;
* 管理本地主上的像; * 管理本地主上的像;
*绍镜像实现的基本原理。 *紹鏡像實現的基本原理。

View File

@@ -1,28 +1,28 @@
##创建镜 ##創建鏡
创建镜像有很多方法,用可以 Docker Hub 取已有镜像并更新,也可以利用本地文件系统创建一 創建鏡像有很多方法,用可以 Docker Hub 取已有鏡像並更新,也可以利用本地文件系統創建一
### 修改已有 ### 修改已有
先使用下载的镜像启动容器。 先使用下載的鏡像啟動容器。
``` ```
$ sudo docker run -t -i training/sinatra /bin/bash $ sudo docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/# root@0b2616b0e5a8:/#
``` ```
意:住容器的 ID后还会用到。 意:住容器的 ID後還會用到。
在容器中添加 json 和 gem 两个应用。 在容器中添加 json 和 gem 兩個應用。
``` ```
root@0b2616b0e5a8:/# gem install json root@0b2616b0e5a8:/# gem install json
``` ```
当结束后,我使用 exit 退出,在我的容器已被我们改变了,使用 `docker commit` 命令提交更新的副本。 當結束後,我使用 exit 退出,在我的容器已被我們改變了,使用 `docker commit` 命令提交更新的副本。
``` ```
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 $ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
``` ```
其中,`-m` 指定提交的明信息,跟我使用的版本控制工具一`-a` 可以指定更新的用信息;之是用来创建镜像的容器的 ID指定目标镜像的仓库名和 tag 信息。建成功后会返回这个镜像的 ID 信息。 其中,`-m` 指定提交的明信息,跟我使用的版本控制工具一`-a` 可以指定更新的用信息;之是用來創建鏡像的容器的 ID指定目標鏡像的倉庫名和 tag 信息。建成功後會返回這個鏡像的 ID 信息。
使用 `docker images` 查看新建的像。 使用 `docker images` 查看新建的像。
``` ```
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
@@ -30,22 +30,22 @@ training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MB
ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB
ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB
``` ```
,可以使用新的镜像来启动容器 ,可以使用新的鏡像來啟動容器
``` ```
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash $ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@78e82f680994:/# root@78e82f680994:/#
``` ```
###利用 Dockerfile 来创建镜 ###利用 Dockerfile 來創建鏡
使用 `docker commit` 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我可以使用 `docker build` 来创建一新的像。此,首先需要建一 Dockerfile包含一些如何创建镜像的指令。 使用 `docker commit` 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享。我可以使用 `docker build` 來創建一新的像。此,首先需要建一 Dockerfile包含一些如何創建鏡像的指令。
新建一个目录和一 Dockerfile 新建一個目錄和一 Dockerfile
``` ```
$ mkdir sinatra $ mkdir sinatra
$ cd sinatra $ cd sinatra
$ touch Dockerfile $ touch Dockerfile
``` ```
Dockerfile 中每一指令都创建镜像的一,例如: Dockerfile 中每一指令都創建鏡像的一,例如:
``` ```
# This is a comment # This is a comment
FROM ubuntu:14.04 FROM ubuntu:14.04
@@ -54,13 +54,13 @@ RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra RUN gem install sinatra
``` ```
Dockerfile 基本的法是 Dockerfile 基本的法是
* 使用`#`来注释 * 使用`#`來註釋
* `FROM` 指令告 Docker 使用哪个镜像作为基础 * `FROM` 指令告 Docker 使用哪個鏡像作為基礎
*着是维护者的信息 *著是維護者的信息
* `RUN`开头的指令会在创建中行,比如安装一个软件包,在这里使用 apt-get 来安装了一些 * `RUN`開頭的指令會在創建中行,比如安裝一個軟件包,在這裏使用 apt-get 來安裝了一些
编写完成 Dockerfile 可以使用 `docker build` 生成像。 編寫完成 Dockerfile 可以使用 `docker build` 生成像。
``` ```
$ sudo docker build -t="ouruser/sinatra:v2" . $ sudo docker build -t="ouruser/sinatra:v2" .
@@ -96,15 +96,15 @@ Successfully installed sinatra-1.4.5
Removing intermediate container 5e9d0065c1f7 Removing intermediate container 5e9d0065c1f7
Successfully built 324104cde6ad Successfully built 324104cde6ad
``` ```
其中 `-t` 标记来添加 tag指定新的像的用信息。 其中 `-t` 標記來添加 tag指定新的像的用信息。
“.” 是 Dockerfile 所在的路径(当前目),也可以替换为一个具体的 Dockerfile 的路 “.” 是 Dockerfile 所在的路徑(當前目),也可以替換為一個具體的 Dockerfile 的路
可以看到 build 程在行操作。它要做的第一件事情就是上传这个 Dockerfile 容,因所有的操作都要依 Dockerfile 来进行。 可以看到 build 程在行操作。它要做的第一件事情就是上傳這個 Dockerfile 容,因所有的操作都要依 Dockerfile 來進行。
Dockfile 中的指令被一条一条的执行。每一步都建了一新的容器,在容器中行指令提交修改(就跟之前介绍过`docker commit`)。所有的指令都行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被除和清理了。 Dockfile 中的指令被一條一條的執行。每一步都建了一新的容器,在容器中行指令提交修改(就跟之前介紹過`docker commit`)。所有的指令都行完畢之後,返回了最終的鏡像 id。所有的中間步驟所產生的容器都被除和清理了。
*意一个镜像不能超 127 *意一個鏡像不能超 127
此外,可以利用 `ADD` 命令制本地文件到像;用 `EXPOSE` 命令向外部放端口;用 `CMD` 命令描述容器启动后运行的程序等。例如 此外,可以利用 `ADD` 命令制本地文件到像;用 `EXPOSE` 命令向外部放端口;用 `CMD` 命令描述容器啟動後運行的程序等。例如
``` ```
# put my local web site in myApp folder to /var/www # put my local web site in myApp folder to /var/www
ADD myApp /var/www ADD myApp /var/www
@@ -114,12 +114,12 @@ EXPOSE 80
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"] CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
``` ```
在可以利用新建的镜像来启动一个容器。 在可以利用新建的鏡像來啟動一個容器。
``` ```
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash $ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@8196968dac35:/# root@8196968dac35:/#
``` ```
可以用 `docker tag` 命令修改像的标签 可以用 `docker tag` 命令修改像的標簽
``` ```
$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel $ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
$ sudo docker images ouruser/sinatra $ sudo docker images ouruser/sinatra
@@ -129,25 +129,25 @@ ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB
``` ```
*:更多用法,请参考 [Dockerfile](../dockerfile/README.md) 章 *:更多用法,請參考 [Dockerfile](../dockerfile/README.md) 章
### 本地文件系统导 ### 本地文件系統導
本地文件系统导入一个镜像,可以使用 openvz容器虚拟化的先锋技术)的模板来创建: 本地文件系統導入一個鏡像,可以使用 openvz容器虛擬化的先鋒技術)的模板來創建:
openvz 的模板下地址 http://openvz.org/Download/templates/precreated。 openvz 的模板下地址 http://openvz.org/Download/templates/precreated。
比如,先下了一 ubuntu-14.04 的像,之使用以下命令入: 比如,先下了一 ubuntu-14.04 的像,之使用以下命令入:
``` ```
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04 sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
``` ```
查看新入的像。 查看新入的像。
``` ```
docker images docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB
``` ```
###上传镜 ###上傳鏡
可以通 `docker push` 命令,把自己建的像上传到仓库中来共享。例如,用在 Docker Hub 上完成注册后,可以推送自己的像到仓库中。 可以通 `docker push` 命令,把自己建的像上傳到倉庫中來共享。例如,用在 Docker Hub 上完成註冊後,可以推送自己的像到倉庫中。
``` ```
$ sudo docker push ouruser/sinatra $ sudo docker push ouruser/sinatra
The push refers to a repository [ouruser/sinatra] (len: 1) The push refers to a repository [ouruser/sinatra] (len: 1)

View File

@@ -1,7 +1,7 @@
## 像的实现原理 ## 像的實現原理
Docker 像是怎么实现增量的修改和维护的? Docker 像是怎麽實現增量的修改和維護的?
个镜像都由很多层次构Docker 使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。 個鏡像都由很多層次構Docker 使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 將這些不同的層結合到一個鏡像中去。
通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个 disk 到同一个目录下,另一更常用的就是将一个只读的分支和一个可写的分支合在一起Live CD 正是基此方法可以允许在镜像不的基上允许用户在其上行一些操作。 通常 Union FS 有兩個用途, 一方面可以實現不借助 LVM、RAID 將多個 disk 到同一個目錄下,另一更常用的就是將一個只讀的分支和一個可寫的分支合在一起Live CD 正是基此方法可以允許在鏡像不的基上允許用戶在其上行一些操作。
Docker 在 AUFS 上建的容器也是利用了似的原理。 Docker 在 AUFS 上建的容器也是利用了似的原理。

View File

@@ -1,5 +1,5 @@
## 列出本地 ## 列出本地
使用 `docker images` 示本地已有的像。 使用 `docker images` 示本地已有的像。
``` ```
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
@@ -11,19 +11,19 @@ ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB
... ...
``` ```
在列出信息中,可以看到几个字段信息 在列出信息中,可以看到幾個字段信息
* 来自于哪个仓库,比如 ubuntu * 來自於哪個倉庫,比如 ubuntu
* 像的标记,比如 14.04 * 像的標記,比如 14.04
* 它的 `ID` (唯一) * 它的 `ID` (唯一)
* 创建时间 * 創建時間
* 像大小 * 像大小
其中像的 `ID` 唯一标识了镜像,意到 `ubuntu:14.04``ubuntu:trusty` 具有相同的`ID`明它们实际上是同一像。 其中像的 `ID` 唯一標識了鏡像,意到 `ubuntu:14.04``ubuntu:trusty` 具有相同的`ID`明它們實際上是同一像。
`TAG` 信息用来标记来自同一个仓库的不同像。例如 `ubuntu` 仓库中有多个镜像,通 `TAG` 信息来区分发行版本,例如 `10.04``12.04``12.10``13.04``14.04` 等。例如下面的命令指定使用`ubuntu:14.04` 来启动一个容器。 `TAG` 信息用來標記來自同一個倉庫的不同像。例如 `ubuntu` 倉庫中有多個鏡像,通 `TAG` 信息來區分發行版本,例如 `10.04``12.04``12.10``13.04``14.04` 等。例如下面的命令指定使用`ubuntu:14.04` 來啟動一個容器。
``` ```
$ sudo docker run -t -i ubuntu:14.04 /bin/bash $ sudo docker run -t -i ubuntu:14.04 /bin/bash
``` ```
如果不指定具体的标记,则默认使用 `latest` 标记信息。 如果不指定具體的標記,則默認使用 `latest` 標記信息。

View File

@@ -1,8 +1,8 @@
## 获取镜 ## 獲取鏡
可以使用 `docker pull` 命令来从仓库获取所需要的像。 可以使用 `docker pull` 命令來從倉庫獲取所需要的像。
下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。 下面的例子將從 Docker Hub 倉庫下載一個 Ubuntu 12.04 操作系統的鏡像。
``` ```
$ sudo docker pull ubuntu:12.04 $ sudo docker pull ubuntu:12.04
Pulling repository ubuntu Pulling repository ubuntu
@@ -14,12 +14,12 @@ a300658979be: Download complete
ffdaafd1ca50: Download complete ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete d047ae21eeaf: Download complete
``` ```
载过程中,会输出获取镜像的每一信息。 載過程中,會輸出獲取鏡像的每一信息。
命令实际上相当于 `$ sudo docker pull registry.hub.docker.com/ubuntu:12.04` 命令,即从注册服务`registry.hub.docker.com` 中的 `ubuntu` 仓库来下载标记为 `12.04`像。 命令實際上相當於 `$ sudo docker pull registry.hub.docker.com/ubuntu:12.04` 命令,即從註冊服務`registry.hub.docker.com` 中的 `ubuntu` 倉庫來下載標記為 `12.04`像。
候官方仓库注册服务器下载较慢,可以其他仓库下载 候官方倉庫註冊服務器下載較慢,可以其他倉庫下載
其它仓库下载时需要指定完整的仓库注册服务器地址。例如 其它倉庫下載時需要指定完整的倉庫註冊服務器地址。例如
``` ```
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 $ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
Pulling dl.dockerpool.com:5000/ubuntu Pulling dl.dockerpool.com:5000/ubuntu
@@ -32,7 +32,7 @@ ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete d047ae21eeaf: Download complete
``` ```
完成,即可随时使用该镜像了,例如建一容器,其中行 bash 用。 完成,即可隨時使用該鏡像了,例如建一容器,其中行 bash 用。
``` ```
$ sudo docker run -t -i ubuntu:12.04 /bin/bash $ sudo docker run -t -i ubuntu:12.04 /bin/bash
root@fe7fc4bd8fc9:/# root@fe7fc4bd8fc9:/#

View File

@@ -1,5 +1,5 @@
## 移除本地 ## 移除本地
如果要移除本地的像,可以使用 `docker rmi` 命令。`docker rm` 命令是移除容器。 如果要移除本地的像,可以使用 `docker rmi` 命令。`docker rm` 命令是移除容器。
``` ```
$ sudo docker rmi training/sinatra $ sudo docker rmi training/sinatra
Untagged: training/sinatra:latest Untagged: training/sinatra:latest
@@ -8,4 +8,4 @@ Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0 Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0
``` ```
*意:在删除镜像之前要先用 `docker rm` 掉依赖于这个镜像的所有容器。 *意:在刪除鏡像之前要先用 `docker rm` 掉依賴於這個鏡像的所有容器。

View File

@@ -1,7 +1,7 @@
## 存出和载入镜 ## 存出和載入鏡
### 存出 ### 存出
如果要导出镜像到本地文件,可以使用 `docker save` 命令。 如果要導出鏡像到本地文件,可以使用 `docker save` 命令。
``` ```
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
@@ -10,8 +10,8 @@ ubuntu 14.04 c4ff7513909d 5 weeks ago
$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04 $sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
``` ```
### 载入镜 ### 載入鏡
可以使用 `docker load` 从导出的本地文件中再入到本地镜像库,例如 可以使用 `docker load` 從導出的本地文件中再入到本地鏡像庫,例如
``` ```
$ sudo docker load --input ubuntu_14.04.tar $ sudo docker load --input ubuntu_14.04.tar
``` ```
@@ -19,4 +19,4 @@ $ sudo docker load --input ubuntu_14.04.tar
``` ```
$ sudo docker load < ubuntu_14.04.tar $ sudo docker load < ubuntu_14.04.tar
``` ```
这将导入镜像以及其相的元数据信息(包括标签等)。 這將導入鏡像以及其相的元數據信息(包括標簽等)。