Merge pull request #17 from pcedison/master

修改第三、第五章用詞
This commit is contained in:
philipz 2014-11-24 08:16:22 +08:00
commit 4789287f30
11 changed files with 76 additions and 76 deletions

View File

@ -1,6 +1,6 @@
# Docker 容器 # Docker 容器
容器是 Docker 又一核心概念。 容器是 Docker 又一核心概念。
簡單的說,容器是獨立執行的一個或一組應用,以及它們的執行態環境。對應的,虛擬機可以理解為模擬執行的一整套作業系統(提供了執行態環境和其他系統環境)和跑在上面的應用。 簡單的說,容器是獨立執行的一個或一組應用,以及它們的執行態環境。換句話說,虛擬機可以理解為模擬執行的一整套作業系統(提供了執行態環境和其他系統環境)和跑在上面的應用。
本章將具體介紹如何來管理一個容器,包括創建、啟動和停止等。 本章將具體介紹如何來管理一個容器,包括創建、啟動和停止等。

View File

@ -2,7 +2,7 @@
在使用 `-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
@ -16,8 +16,8 @@ root@243c32535da7:/#
### 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

View File

@ -11,7 +11,7 @@ $ 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
@ -23,6 +23,6 @@ test/ubuntu v1.0 9d37a6082e97 About a minute ago
$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,7 +1,7 @@
##啟動容器 ##啟動容器
啟動容器有兩種方式,一種是基於鏡像新建一個容器並啟動,另外一個是將在終止狀態stopped的容器重新啟動。 啟動容器有兩種方式,一種是將映像檔新建一個容器並啟動,另外一個是將終止狀態stopped的容器重新啟動。
因為 Docker 的容器實在太輕量級了,很多時候用戶都是隨時刪除和新創建容器。 因為 Docker 的容器實在太輕量級了,用戶可以隨時刪除和新創建容器。
###新建並啟動 ###新建並啟動
所需要的命令主要為 `docker run` 所需要的命令主要為 `docker run`
@ -11,14 +11,14 @@
$ 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` 則讓容器的標準輸入保持打開。
在交互模式下,用戶可以通過所創建的終端來輸入命令,例如 在交互模式下,用戶可以通過所創建的終端來輸入命令,例如
``` ```
@ -30,11 +30,11 @@ bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr
當利用 `docker run` 來創建容器時Docker 在後臺執行的標準操作包括: 當利用 `docker run` 來創建容器時Docker 在後臺執行的標準操作包括:
* 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載 * 檢查本地是否存在指定的映像檔,不存在就從公有倉庫下載
* 利用鏡像創建並啟動一個容器 * 利用映像檔創建並啟動一個容器
* 分配一個文件系統,並在唯讀的鏡像層外面掛載一層可讀寫層 * 分配一個文件系統,並在唯讀的映像檔層外面掛載一層可讀寫層
* 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去 * 從宿主主機配置的網路橋接口中橋接一個虛擬埠到容器中去
* 從地址配置一個 ip 地址給容器 * 從地址堆中配置一個 ip 地址給容器
* 執行用戶指定的應用程序 * 執行用戶指定的應用程序
* 執行完畢後容器被終止 * 執行完畢後容器被終止

View File

@ -2,7 +2,7 @@
可以使用 `docker stop` 來終止一個執行中的容器。 可以使用 `docker stop` 來終止一個執行中的容器。
此外當Docker容器中指定的應用終結時容器也自動終止。 此外當Docker容器中指定的應用終結時容器也自動終止。
例如對於上一章節中只啟動了一個終端的容器,用戶通過 `exit` 命令或 `Ctrl+d` 來退出終端時,所創建的容器立刻終止。 例如對於上一章節中只啟動了一個終端的容器,用戶通過 `exit` 命令或 `Ctrl+d` 來退出終端時,所創建的容器立刻終止。
終止狀態的容器可以用 `docker ps -a` 命令看到。例如 終止狀態的容器可以用 `docker ps -a` 命令看到。例如
``` ```
@ -14,4 +14,4 @@ ba267838cc1b ubuntu:14.04 "/bin/bash" 30 minutes a
處於終止狀態的容器,可以通過 `docker start` 命令來重新啟動。 處於終止狀態的容器,可以通過 `docker start` 命令來重新啟動。
此外,`docker restart` 命令會將一個執行的容器終止,然後再重新啟動它。 此外,`docker restart` 命令會將一個執行的容器終止,然後再重新啟動它。

View File

@ -3,14 +3,14 @@
Docker 支持 CentOS6 及以後的版本。 Docker 支持 CentOS6 及以後的版本。
### CentOS6 ### CentOS6
對於 CentOS6可以使用 [EPEL](https://fedoraproject.org/wiki/EPEL) 庫安裝 Docker命令如下 對於 CentOS6可以使用 [EPEL](https://fedoraproject.org/wiki/EPEL) 套件庫安裝 Docker命令如下
``` ```
$ sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm $ sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo yum install docker-io $ sudo yum install docker-io
``` ```
### CentOS7 ### CentOS7
CentOS7 系統 `CentOS-Extras` 庫中已 Docker可以直接安裝 CentOS7 系統 `CentOS-Extras` 庫中已內建 Docker可以直接安裝
``` ```
$ sudo yum install docker $ sudo yum install docker
``` ```

View File

@ -1,7 +1,7 @@
## Ubuntu 系列安裝 Docker ## Ubuntu 系列安裝 Docker
### 通過系統自帶包安裝 ### 通過系統內建套件安裝
Ubuntu 14.04 版本系統中已經自帶了 Docker 包,可以直接安裝。 Ubuntu 14.04 版本套件庫中已經內建了 Docker 套件,可以直接安裝。
``` ```
$ sudo apt-get update $ sudo apt-get update
$ sudo apt-get install -y docker.io $ sudo apt-get install -y docker.io
@ -9,10 +9,10 @@ $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
``` ```
如果使用作業系統自帶包安裝 Docker目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過使用 Docker 源的方式 如果使用作業系統內建套件安裝 Docker目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過更新 Docker 套件庫的方式進行安裝
### 通過Docker安裝最新版本 ### 通過Docker 套件庫安裝最新版本
要安裝最新的 Docker 版本,首先需要安裝 apt-transport-https 支持,之後通過添加來安裝。 要安裝最新的 Docker 版本,首先需要安裝 apt-transport-https 支持,之後通過添加套件庫來安裝。
``` ```
$ sudo apt-get install apt-transport-https $ sudo apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
@ -22,7 +22,7 @@ $ sudo apt-get install -y lxc-docker
``` ```
### 14.04 之前版本 ### 14.04 之前版本
如果是較低版本的 Ubuntu 系統,需要先更新內核 如果是較舊版本的 Ubuntu 系統,需要先更新核心
``` ```
$ sudo apt-get update $ sudo apt-get update
$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring $ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring

View File

@ -1,8 +1,8 @@
# 倉庫 # 倉庫
倉庫Repository是集中存放鏡像的地方。 倉庫Repository是集中存放映像檔的地方。
一個容易混淆的概念是註冊服Registry。實際上註冊服器是管理倉庫的具體服器,每個服器上可以有多個倉庫,而每個倉庫下面有多個鏡像。從這方面來說,倉庫可以被認為是一個具體的項目或目錄。例如對於倉庫地址 `dl.dockerpool.com/ubuntu` 來說,`dl.dockerpool.com` 是註冊服器地址,`ubuntu` 是倉庫名。 一個容易混淆的概念是註冊服器Registry。實際上註冊服器是管理倉庫的具體服器,每個服器上可以有多個倉庫,而每個倉庫下面有多個映像檔。從這方面來說,倉庫可以被認為是一個具體的項目或目錄。例如對於倉庫地址 `dl.dockerpool.com/ubuntu` 來說,`dl.dockerpool.com` 是註冊服器地址,`ubuntu` 是倉庫名。
大部分時候,並不需要嚴格區分這兩者的概念。 大部分時候,並不需要嚴格區分這兩者的概念。

View File

@ -1,30 +1,30 @@
## 倉庫配置文件 ## 倉庫配置文件
Docker 的 Registry 利用配置文件提供了一些倉庫的模flavor用戶可以直接使用它們來進行開發或生產部署。 Docker 的 Registry 利用配置文件提供了一些倉庫的模flavor用戶可以直接使用它們來進行開發或生產部署。
### 模 ### 模
`config_sample.yml` 文件中,可以看到一些現成的模段: `config_sample.yml` 文件中,可以看到一些現成的模段:
* `common`:基礎配置 * `common`:基礎配置
* `local`儲數據到本地文件系統 * `local`:儲數據到本地文件系統
* `s3`儲數據到 AWS S3 中 * `s3`:儲數據到 AWS S3 中
* `dev`:使用 `local`的基本配置 * `dev`:使用 `local`的基本配置
* `test`:單元測試使用 * `test`:單元測試使用
* `prod`生產環境配置基本上跟s3配置類似 * `prod`生產環境配置基本上跟s3配置類似
* `gcs`存儲數據到 Google 的雲存儲 * `gcs`儲存數據到 Google 的雲端
* `swift`儲數據到 OpenStack Swift 服務 * `swift`:儲數據到 OpenStack Swift 服務
* `glance`儲數據到 OpenStack Glance 服務,本地文件系統為後備 * `glance`:儲數據到 OpenStack Glance 服務,本地文件系統為後備
* `glance-swift`儲數據到 OpenStack Glance 服務Swift 為後備 * `glance-swift`:儲數據到 OpenStack Glance 服務Swift 為後備
* `elliptics`儲數據到 Elliptics key/value 存儲 * `elliptics`:儲數據到 Elliptics key/value 存儲
用戶也可以添加自定義的模版段。 用戶也可以添加自定義的模版段。
默認情況下使用的模板是 `dev`,要使用某個模板作為默認值,可以添加 `SETTINGS_FLAVOR` 到環境變量中,例如 預設情況下使用的模組是 `dev`,要使用某個模組作為預設值,可以添加 `SETTINGS_FLAVOR` 到環境變數中,例如
``` ```
export SETTINGS_FLAVOR=dev export SETTINGS_FLAVOR=dev
``` ```
另外,配置文件中支持從環境變中加載值,語法格式為 `_env:VARIABLENAME[:DEFAULT]` 另外,配置文件中支持從環境變中加載值,語法格式為 `_env:VARIABLENAME[:DEFAULT]`
### 例配置 ### 例配置
``` ```
common: common:
loglevel: info loglevel: info

View File

@ -1,14 +1,14 @@
## Docker Hub ## Docker Hub
目前 Docker 官方維護了一個公共倉庫 [Docker Hub](https://hub.docker.com/),其中已經包括了超過 15,000 的鏡像。大部分需求,都可以通過在 Docker Hub 中直接下載鏡像來實現。 目前 Docker 官方維護了一個公共倉庫 [Docker Hub](https://hub.docker.com/),其中已經包括了超過 15,000 的映像檔。大部分需求,都可以通過在 Docker Hub 中直接下載映像檔來實現。
### 登錄 ### 登錄
可以通過執行 `docker login` 命令來輸入用戶名、密碼和郵箱來完成註冊和登錄。 可以通過執行 `docker login` 命令來輸入用戶名稱、密碼和電子信箱來完成註冊和登錄。
註冊成功後,本地用戶目錄的 `.dockercfg` 中將保存用戶的認證息。 註冊成功後,本地用戶目錄的 `.dockercfg` 中將保存用戶的認證息。
### 基本操作 ### 基本操作
用戶無需登錄即可通過 `docker search` 命令來查找官方倉庫中的鏡像,並利用 `docker pull` 命令來將它下載到本地。 用戶無需登錄即可通過 `docker search` 命令來查詢官方倉庫中的映像檔,並利用 `docker pull` 命令來將它下載到本地。
例如以 centos 為關鍵進行搜索: 例如以 centos 為關鍵進行搜索:
``` ```
$ sudo docker search centos $ sudo docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED NAME DESCRIPTION STARS OFFICIAL AUTOMATED
@ -19,16 +19,16 @@ saltstack/centos-6-minimal
tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4 instead. ... 5 [OK] tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4 instead. ... 5 [OK]
... ...
``` ```
可以看到返回了很多包含關鍵字的鏡像,其中包括鏡像名字、描述、星級(表示該鏡像的受歡迎程度)、是否官方創建、是否自動創建。 可以看到顯示了很多包含關鍵字的映像檔,其中包括映像檔名字、描述、星級(表示該映像檔的受歡迎程度)、是否官方創建、是否自動創建。
官方的鏡像說明是官方項目組創建和維護的automated 資源允許用戶驗證鏡像的來源和內容。 官方的映像檔說明是官方項目組創建和維護的automated 資源允許用戶驗證映像檔的來源和內容。
根據是否是官方提供,可將鏡像資源分為兩類。 根據是否是官方提供,可將映像檔資源分為兩類。
一種是類似 centos 這樣的基礎鏡像,被稱為基礎或根鏡像。這些基礎鏡像是由 Docker 公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。 一種是類似 centos 這樣的基礎映像檔,被稱為基礎或根映像檔。這些基礎映像檔是由 Docker 公司創建、驗證、支持、提供。這樣的映像檔往往使用單個單詞作為名字。
還有一種類型,比如 `tianon/centos` 鏡像,它是由 Docker 的用戶創建並維護的,往往帶有用戶名稱前綴。可以通過前綴 `user_name/` 來指定使用某個用戶提供的鏡像,比如 tianon 用戶。 還有一種類型,比如 `tianon/centos` 映像檔,它是由 Docker 的用戶創建並維護的,往往帶有用戶名稱前綴。可以通過前綴 `user_name/` 來指定使用某個用戶提供的映像檔,比如 tianon 用戶。
另外,在查找的時候通過 `-s N` 參數可以指定僅顯示評價為 `N` 星以上的鏡像 另外,在查詢的時候通過 `-s N` 參數可以指定僅顯示評價為 `N` 星以上的映像檔
下載官方 centos 鏡像到本地。 下載官方 centos 映像檔到本地。
``` ```
$ sudo docker pull centos $ sudo docker pull centos
Pulling repository centos Pulling repository centos
@ -37,11 +37,11 @@ Pulling repository centos
511136ea3c5a: Download complete 511136ea3c5a: Download complete
7064731afe90: Download complete 7064731afe90: Download complete
``` ```
用戶也可以在登錄後通過 `docker push` 命令來將鏡像推送到 Docker Hub。 用戶也可以在登錄後通過 `docker push` 命令來將映像檔推送到 Docker Hub。
### 自動創建 ### 自動創建
自動創建Automated Builds功能對於需要經常升級鏡像內程序來說,十分方便。 自動創建Automated Builds功能對於需要經常升級映像檔內程序來說,十分方便。
有時候,用戶創建了鏡像,安裝了某個軟件,如果軟件發布新版本則需要手動更新鏡像。。 有時候,用戶創建了映像檔,安裝了某個軟體,如果軟體發布新版本則需要手動更新映像檔。。
而自動創建允許用戶通過 Docker Hub 指定跟蹤一個目標網站(目前支持 [GitHub](github.org) 或 [BitBucket](bitbucket.org))上的項目,一旦項目發生新的提交,則自動執行創建。 而自動創建允許用戶通過 Docker Hub 指定跟蹤一個目標網站(目前支持 [GitHub](github.org) 或 [BitBucket](bitbucket.org))上的項目,一旦項目發生新的提交,則自動執行創建。

View File

@ -4,15 +4,15 @@
本節介紹如何使用本地倉庫。 本節介紹如何使用本地倉庫。
`docker-registry` 是官方提供的工具,可以用於構建私有的鏡像倉庫。 `docker-registry` 是官方提供的工具,可以用於構建私有的映像檔倉庫。
### 安裝執行 docker-registry ### 安裝執行 docker-registry
#### 容器執行 #### 容器執行
在安裝了 Docker 後,可以通過獲取官方 registry 鏡像來執行。 在安裝了 Docker 後,可以通過獲取官方 registry 映像檔來執行。
``` ```
$ sudo docker run -d -p 5000:5000 registry $ sudo docker run -d -p 5000:5000 registry
``` ```
這將使用官方的 registry 鏡像來啟動本地的私有倉庫。 這將使用官方的 registry 映像檔來啟動本地的私有倉庫。
用戶可以通過指定參數來配置私有倉庫位置,例如配置鏡像存儲到 Amazon S3 服務。 用戶可以通過指定參數來配置私有倉庫位置,例如配置映像檔存儲到 Amazon S3 服務。
``` ```
$ sudo docker run \ $ sudo docker run \
-e SETTINGS_FLAVOR=s3 \ -e SETTINGS_FLAVOR=s3 \
@ -28,14 +28,14 @@ $ sudo docker run \
``` ```
$ sudo docker run -d -p 5000:5000 -v /home/user/registry-conf:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml registry $ sudo docker run -d -p 5000:5000 -v /home/user/registry-conf:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml registry
``` ```
默認情況下,倉庫會被創建在容器的 `/tmp/registry` 下。可以通過 `-v` 參數來將鏡像文件存放在本地的指定路徑。 預設情況下,倉庫會被創建在容器的 `/tmp/registry` 下。可以通過 `-v` 參數來將映像檔文件存放在本地的指定路徑。
例如下面的例子將上傳的鏡像放到 `/opt/data/registry` 目錄。 例如下面的例子將上傳的映像檔放到 `/opt/data/registry` 目錄。
``` ```
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry $ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
``` ```
#### 本地安裝 #### 本地安裝
對於 Ubuntu 或 CentOS 等發行版,可以直接通過安裝。 對於 Ubuntu 或 CentOS 等發行版,可以直接通過套件庫安裝。
* Ubuntu * Ubuntu
``` ```
$ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev $ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev
@ -47,14 +47,14 @@ $ sudo yum install -y python-devel libevent-devel python-pip gcc xz-devel
$ sudo python-pip install docker-registry $ sudo python-pip install docker-registry
``` ```
也可以從 [docker-registry](https://github.com/docker/docker-registry) 項目下載碼進行安裝。 也可以從 [docker-registry](https://github.com/docker/docker-registry) 項目下載原始碼進行安裝。
``` ```
$ sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev $ sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev
$ git clone https://github.com/docker/docker-registry.git $ git clone https://github.com/docker/docker-registry.git
$ cd docker-registry $ cd docker-registry
$ sudo python setup.py install $ sudo python setup.py install
``` ```
然後修改配置文件,主要修改 dev 模板段的 `storage_path` 到本地的儲倉庫的路徑。 然後修改配置文件,主要修改 dev 模板段的 `storage_path` 到本地的儲倉庫的路徑。
``` ```
$ cp config/config_sample.yml config/config.yml $ cp config/config_sample.yml config/config.yml
``` ```
@ -66,14 +66,14 @@ $ sudo gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application
``` ```
$ sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application $ sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application
``` ```
此時使用訪問本地的 5000 端口,看到輸出 docker-registry 的版本信息說明執行成功。 此時使用連結本地的 5000 端口,看到輸出 docker-registry 的版本訊息說明執行成功。
*註:`config/config_sample.yml` 文件是例配置文件。 *註:`config/config_sample.yml` 文件是例配置文件。
###在私有倉庫上傳、下載、搜索鏡像 ###在私有倉庫上傳、下載、搜索映像檔
創建好私有倉庫之後,就可以使用 `docker tag` 來標記一個鏡像,然後推送它到倉庫,別的機器上就可以下載下來了。例如私有倉庫地址為 `192.168.7.26:5000` 創建好私有倉庫之後,就可以使用 `docker tag` 來標記一個映像檔,然後推送它到倉庫,別的機器上就可以下載下來了。例如私有倉庫地址為 `192.168.7.26:5000`
先在本機查看已有的鏡像 先在本機查看已有的映像檔
``` ```
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
@ -81,7 +81,7 @@ ubuntu latest ba5877dc9bec 6 week
ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB
``` ```
使用`docker tag` 將 `ba58` 這個鏡像標記為 `192.168.7.26:5000/test`(格式為 `docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]`)。 使用`docker tag` 將 `ba58` 這個映像檔標記為 `192.168.7.26:5000/test`(格式為 `docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]`)。
``` ```
$ sudo docker tag ba58 192.168.7.26:5000/test $ sudo docker tag ba58 192.168.7.26:5000/test
root ~ # docker images root ~ # docker images
@ -90,7 +90,7 @@ ubuntu 14.04 ba5877dc9bec 6 week
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB 192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
``` ```
使用 `docker push` 上傳標記的鏡像 使用 `docker push` 上傳標記的映像檔
``` ```
$ sudo docker push 192.168.7.26:5000/test $ sudo docker push 192.168.7.26:5000/test
The push refers to a repository [192.168.7.26:5000/test] (len: 1) The push refers to a repository [192.168.7.26:5000/test] (len: 1)
@ -104,14 +104,14 @@ Image 2318d26665ef already pushed, skipping
Image ba5877dc9bec already pushed, skipping Image ba5877dc9bec already pushed, skipping
Pushing tag for rev [ba5877dc9bec] on {http://192.168.7.26:5000/v1/repositories/test/tags/latest} Pushing tag for rev [ba5877dc9bec] on {http://192.168.7.26:5000/v1/repositories/test/tags/latest}
``` ```
用 curl 查看倉庫中的鏡像 用 curl 查看倉庫中的映像檔
``` ```
$ curl http://192.168.7.26:5000/v1/search $ curl http://192.168.7.26:5000/v1/search
{"num_results": 7, "query": "", "results": [{"description": "", "name": "library/miaxis_j2ee"}, {"description": "", "name": "library/tomcat"}, {"description": "", "name": "library/ubuntu"}, {"description": "", "name": "library/ubuntu_office"}, {"description": "", "name": "library/desktop_ubu"}, {"description": "", "name": "dockerfile/ubuntu"}, {"description": "", "name": "library/test"}]} {"num_results": 7, "query": "", "results": [{"description": "", "name": "library/miaxis_j2ee"}, {"description": "", "name": "library/tomcat"}, {"description": "", "name": "library/ubuntu"}, {"description": "", "name": "library/ubuntu_office"}, {"description": "", "name": "library/desktop_ubu"}, {"description": "", "name": "dockerfile/ubuntu"}, {"description": "", "name": "library/test"}]}
``` ```
這裏可以看到 `{"description": "", "name": "library/test"}`,表明鏡像已經被成功上傳了。 這裏可以看到 `{"description": "", "name": "library/test"}`,表明映像檔已經被成功上傳了。
現在可以到另外一臺機器去下載這個鏡像 現在可以到另外一臺機器去下載這個映像檔
``` ```
$ sudo docker pull 192.168.7.26:5000/test $ sudo docker pull 192.168.7.26:5000/test
Pulling repository 192.168.7.26:5000/test Pulling repository 192.168.7.26:5000/test
@ -126,7 +126,7 @@ REPOSITORY TAG IMAGE ID CREAT
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB 192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
``` ```
可以使用 [這個腳本](https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh) 批量上傳本地的鏡像到註冊服務器中,默認是本地註冊服務`127.0.0.1:5000`。例如: 可以使用 [這個腳本](https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh) 批次上傳本地的映像檔到註冊伺服器中,預設為本地註冊伺服`127.0.0.1:5000`。例如:
``` ```
$ wget https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh; sudo chmod a+x push_images.sh $ wget https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh; sudo chmod a+x push_images.sh
$ ./push_images.sh ubuntu:latest centos:centos7 $ ./push_images.sh ubuntu:latest centos:centos7