translate container into traditional chinese

pull/25/head
a504082002 2014-11-18 21:06:39 +08:00
parent 54ad70f9fd
commit b16ff0610b
7 changed files with 63 additions and 63 deletions

View File

@ -1,6 +1,6 @@
# Docker 容器 # Docker 容器
容器是 Docker 又一核心概念。 容器是 Docker 又一核心概念。
简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。 簡單的說,容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解為模擬運行的一整套操作系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
本章将具体介绍如何来管理一个容器,包括创建、启动和停止等。 本章將具體介紹如何來管理一個容器,包括創建、啟動和停止等。

View File

@ -1,20 +1,20 @@
##守护态运 ##守護態運
更多的时候,需要让 Docker 容器在后台以守护态Daemonized形式运行。此时可以通过添加 `-d` 参数来实现 更多的時候,需要讓 Docker 容器在後臺以守護態Daemonized形式運行。此時可以通過添加 `-d` 參數來實現
例如下面的命令会在后台运行容器。 例如下面的命令會在後臺運行容器。
``` ```
$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" $ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147 1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147
``` ```
容器启动后会返回一个唯一的 id也可以通过 `docker ps` 命令来查看容器信息。 容器啟動後會返回一個唯一的 id也可以通過 `docker ps` 命令來查看容器信息。
``` ```
$ sudo docker ps $ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e5535038e28 ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute insane_babbage 1e5535038e28 ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute insane_babbage
``` ```
获取容器的输出信息,可以通过 `docker logs` 命令。 獲取容器的輸出信息,可以通過 `docker logs` 命令。
``` ```
$ sudo docker logs insane_babbage $ sudo docker logs insane_babbage
hello world hello world

View File

@ -1,8 +1,8 @@
## 入容器 ## 入容器
在使用 `-d` 参数时,容器启动后会进入后台 在使用 `-d` 參數時,容器啟動後會進入後臺
某些时候需要进入容器进行操作,有很多种方法,包括使用 `docker attach` 命令或 `nsenter` 工具等。 某些時候需要進入容器進行操作,有很多種方法,包括使用 `docker attach` 命令或 `nsenter` 工具等。
### attach 命令 ### attach 命令
`docker attach` 是Docker自带的命令。下面示例如何使用该命令。 `docker attach` 是Docker自帶的命令。下面示例如何使用該命令。
``` ```
$ sudo docker run -idt ubuntu $ sudo docker run -idt ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550 243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
@ -12,12 +12,12 @@ CONTAINER ID IMAGE COMMAND CREATED
$sudo docker attach nostalgic_hypatia $sudo docker attach nostalgic_hypatia
root@243c32535da7:/# root@243c32535da7:/#
``` ```
但是使用 `attach` 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。 但是使用 `attach` 命令有時候並不方便。當多個窗口同時 attach 到同一個容器的時候,所有窗口都會同步顯示。當某個窗口因命令阻塞時,其他窗口也無法執行操作了。
### nsenter 命令 ### nsenter 命令
#### 安 #### 安
`nsenter` 工具在 util-linux 包2.23版本包含。 `nsenter` 工具在 util-linux 包2.23版本包含。
如果系统中 util-linux 包没有该命令,可以按照下面的方法从源码安装 如果系統中 util-linux 包沒有該命令,可以按照下面的方法從源碼安裝
``` ```
$ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24; $ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;
$ ./configure --without-ncurses $ ./configure --without-ncurses
@ -25,23 +25,23 @@ $ make nsenter && sudo cp nsenter /usr/local/bin
``` ```
#### 使用 #### 使用
`nsenter` 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 `nsenter` 可以訪問另一個進程的名字空間。nsenter 要正常工作需要有 root 權限。
很不幸Ubuntu 14.4 仍然使用的是 util-linux 2.20。安装最新版本的 util-linux2.24)版,请按照以下步骤 很不幸Ubuntu 14.4 仍然使用的是 util-linux 2.20。安裝最新版本的 util-linux2.24)版,請按照以下步驟
``` ```
$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-linux-2.24.tar.gz $ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-linux-2.24.tar.gz
$ cd util-linux-2.24 $ cd util-linux-2.24
$ ./configure --without-ncurses && make nsenter $ ./configure --without-ncurses && make nsenter
$ sudo cp nsenter /usr/local/bin $ sudo cp nsenter /usr/local/bin
``` ```
为了连接到容器,你还需要找到容器的第一个进程的 PID可以通过下面的命令获取。 為了連接到容器,你還需要找到容器的第一個進程的 PID可以通過下面的命令獲取。
``` ```
PID=$(docker inspect --format "{{ .State.Pid }}" <container>) PID=$(docker inspect --format "{{ .State.Pid }}" <container>)
``` ```
过这个 PID就可以连接到这个容器: 過這個 PID就可以連接到這個容器:
``` ```
$ nsenter --target $PID --mount --uts --ipc --net --pid $ nsenter --target $PID --mount --uts --ipc --net --pid
``` ```
下面给出一个完整的例子。 下面給出一個完整的例子。
``` ```
$ sudo docker run -idt ubuntu $ sudo docker run -idt ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550 243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
@ -53,13 +53,13 @@ $ PID=$(docker-pid 243c32535da7)
$ sudo nsenter --target 10981 --mount --uts --ipc --net --pid $ sudo nsenter --target 10981 --mount --uts --ipc --net --pid
root@243c32535da7:/# root@243c32535da7:/#
``` ```
简单的,建议大家下载 簡單的,建議大家下載
[.bashrc_docker](https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker)并将内容放到 .bashrc 中。 [.bashrc_docker](https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker)並將內容放到 .bashrc 中。
``` ```
$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker; $ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc $ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc
``` ```
这个文件中定义了很多方便使用 Docker 的命令,例如 `docker-pid` 可以获取某个容器的 PID`docker-enter` 可以进入容器或直接在容器内执行命令。 這個文件中定義了很多方便使用 Docker 的命令,例如 `docker-pid` 可以獲取某個容器的 PID`docker-enter` 可以進入容器或直接在容器內執行命令。
``` ```
$ echo $(docker-pid <container>) $ echo $(docker-pid <container>)
$ docker-enter <container> ls $ docker-enter <container> ls

View File

@ -1,28 +1,28 @@
##导出和导入容器 ##導出和導入容器
###出容器 ###出容器
如果要导出本地某个容器,可以使用 `docker export` 命令。 如果要導出本地某個容器,可以使用 `docker export` 命令。
``` ```
$ sudo docker ps -a $ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test 7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
$ sudo docker export 7691a814370e > ubuntu.tar $ sudo docker export 7691a814370e > ubuntu.tar
``` ```
这样将导出容器快照到本地文件。 這樣將導出容器快照到本地文件。
###入容器快照 ###入容器快照
可以使用 `docker import` 从容器快照文件中再导入为镜像,例如 可以使用 `docker import` 從容器快照文件中再導入為鏡像,例如
``` ```
$ cat ubuntu.tar | sudo docker import - test/buntu:v1.0 $ cat ubuntu.tar | sudo docker import - test/buntu:v1.0
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
``` ```
此外,也可以通过指定 URL 或者某个目录来导入,例如 此外,也可以通過指定 URL 或者某個目錄來導入,例如
``` ```
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo $sudo docker import http://example.com/exampleimage.tgz example/imagerepo
``` ```
*注:用户既可以使用 `docker load` 来导入镜像存储文件到本地镜像库,也可以使用 `docker import` 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。 *註:用戶既可以使用 `docker load` 來導入鏡像存儲文件到本地鏡像庫,也可以使用 `docker import` 來導入一個容器快照到本地鏡像庫。這兩者的區別在於容器快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也要大。此外,從容器快照文件導入時可以重新指定標簽等元數據信息。

View File

@ -1,9 +1,9 @@
##除容器 ##除容器
可以使用 `docker rm` 来删除一个处于终止状态的容器。 可以使用 `docker rm` 來刪除一個處於終止狀態的容器。
例如 例如
``` ```
$sudo docker rm trusting_newton $sudo docker rm trusting_newton
trusting_newton trusting_newton
``` ```
如果要删除一个运行中的容器,可以添加 `-f` 参数。Docker 会发送 `SIGKILL` 信号给容器。 如果要刪除一個運行中的容器,可以添加 `-f` 參數。Docker 會發送 `SIGKILL` 信號給容器。

View File

@ -1,26 +1,26 @@
##启动容器 ##啟動容器
启动容器有两种方式一种是基于镜像新建一个容器并启动另外一个是将在终止状态stopped的容器重新启动 啟動容器有兩種方式一種是基於鏡像新建一個容器並啟動另外一個是將在終止狀態stopped的容器重新啟動
为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 為 Docker 的容器實在太輕量級了,很多時候用戶都是隨時刪除和新創建容器。
###新建并启动 ###新建並啟動
所需要的命令主要 `docker run` 所需要的命令主要 `docker run`
例如,下面的命令输出一个 “Hello World”之后终止容器。 例如,下面的命令輸出一個 “Hello World”之後終止容器。
``` ```
$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
Hello world Hello world
``` ```
这跟在本地直接执行 `/bin/echo 'hello world'` 几乎感觉不出任何区别 這跟在本地直接執行 `/bin/echo 'hello world'` 幾乎感覺不出任何區別
下面的命令则启动一个 bash 终端,允许用户进行交互。 下面的命令則啟動一個 bash 終端,允許用戶進行交互。
``` ```
$ sudo docker run -t -i ubuntu:14.04 /bin/bash $ sudo docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/# root@af8bae53bdd3:/#
``` ```
其中,`-t` 选项让Docker分配一个伪终端pseudo-tty并绑定到容器的标准输入上 `-i` 则让容器的标准输入保持打开 其中,`-t` 選項讓Docker分配一個偽終端pseudo-tty並綁定到容器的標準輸入上 `-i` 則讓容器的標準輸入保持打開
在交互模式下,用户可以通过所创建的终端来输入命令,例如 在交互模式下,用戶可以通過所創建的終端來輸入命令,例如
``` ```
root@af8bae53bdd3:/# pwd root@af8bae53bdd3:/# pwd
/ /
@ -28,24 +28,24 @@ root@af8bae53bdd3:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
``` ```
当利用 `docker run` 来创建容器时Docker 在后台运行的标准操作包括: 當利用 `docker run` 來創建容器時Docker 在後臺運行的標準操作包括:
* 检查本地是否存在指定的镜像,不存在就从公有仓库下载 * 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
* 利用镜像创建并启动一个容器 * 利用鏡像創建並啟動一個容器
* 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 * 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層
* 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 * 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
* 从地址池配置一个 ip 地址给容器 * 從地址池配置一個 ip 地址給容器
* 执行用户指定的应用程序 * 執行用戶指定的應用程序
* 执行完毕后容器被终 * 執行完畢後容器被終
###启动已终止容器 ###啟動已終止容器
可以利用 `docker start` 命令,直接将一个已经终止的容器启动运行。 可以利用 `docker start` 命令,直接將一個已經終止的容器啟動運行。
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用 `ps``top` 来查看进程信息。 容器的核心為所執行的應用程序,所需要的資源都是應用程序運行所必需的。除此之外,並沒有其它的資源。可以在偽終端中利用 `ps``top` 來查看進程信息。
``` ```
root@ba267838cc1b:/# ps root@ba267838cc1b:/# ps
PID TTY TIME CMD PID TTY TIME CMD
1 ? 00:00:00 bash 1 ? 00:00:00 bash
11 ? 00:00:00 ps 11 ? 00:00:00 ps
``` ```
见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高,是货真价实的轻量级虚拟化。 見,容器中僅運行了指定的 bash 應用。這種特點使得 Docker 對資源的利用率極高,是貨真價實的輕量級虛擬化。

View File

@ -1,10 +1,10 @@
##止容器 ##止容器
可以使用 `docker stop` 来终止一个运行中的容器。 可以使用 `docker stop` 來終止一個運行中的容器。
此外,当Docker容器中指定的应用终结时容器也自动终止。 此外,當Docker容器中指定的應用終結時容器也自動終止。
例如对于上一章节中只启动了一个终端的容器,用户通过 `exit` 命令或 `Ctrl+d` 来退出终端时,所创建的容器立刻终止。 例如對於上一章節中只啟動了一個終端的容器,用戶通過 `exit` 命令或 `Ctrl+d` 來退出終端時,所創建的容器立刻終止。
终止状态的容器可以用 `docker ps -a` 命令看到。例如 終止狀態的容器可以用 `docker ps -a` 命令看到。例如
``` ```
sudo docker ps -a sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
@ -12,6 +12,6 @@ ba267838cc1b ubuntu:14.04 "/bin/bash" 30 minutes a
98e5efa7d997 training/webapp:latest "python app.py" About an hour ago Exited (0) 34 minutes ago backstabbing_pike 98e5efa7d997 training/webapp:latest "python app.py" About an hour ago Exited (0) 34 minutes ago backstabbing_pike
``` ```
处于终止状态的容器,可以通过 `docker start` 命令来重新启动 處於終止狀態的容器,可以通過 `docker start` 命令來重新啟動
此外,`docker restart` 命令会将一个运行态的容器终止,然后再重新启动它。 此外,`docker restart` 命令會將一個運行態的容器終止,然後再重新啟動它。