mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-26 23:16:17 +00:00
commit
4789287f30
@ -1,6 +1,6 @@
|
||||
# Docker 容器
|
||||
容器是 Docker 又一核心概念。
|
||||
|
||||
簡單的說,容器是獨立執行的一個或一組應用,以及它們的執行態環境。對應的,虛擬機可以理解為模擬執行的一整套作業系統(提供了執行態環境和其他系統環境)和跑在上面的應用。
|
||||
簡單的說,容器是獨立執行的一個或一組應用,以及它們的執行態環境。換句話說,虛擬機可以理解為模擬執行的一整套作業系統(提供了執行態環境和其他系統環境)和跑在上面的應用。
|
||||
|
||||
本章將具體介紹如何來管理一個容器,包括創建、啟動和停止等。
|
||||
|
@ -2,7 +2,7 @@
|
||||
在使用 `-d` 參數時,容器啟動後會進入後臺。
|
||||
某些時候需要進入容器進行操作,有很多種方法,包括使用 `docker attach` 命令或 `nsenter` 工具等。
|
||||
### attach 命令
|
||||
`docker attach` 是Docker自帶的命令。下面示例如何使用該命令。
|
||||
`docker attach` 是Docker內建的命令。下面示例如何使用該命令。
|
||||
```
|
||||
$ sudo docker run -idt ubuntu
|
||||
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
|
||||
@ -16,8 +16,8 @@ root@243c32535da7:/#
|
||||
|
||||
### nsenter 命令
|
||||
#### 安裝
|
||||
`nsenter` 工具在 util-linux 包2.23版本後包含。
|
||||
如果系統中 util-linux 包沒有該命令,可以按照下面的方法從源碼安裝。
|
||||
`nsenter` 工具已含括在 util-linux 2.23 後的版本內。
|
||||
如果系統中 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;
|
||||
$ ./configure --without-ncurses
|
||||
|
@ -11,7 +11,7 @@ $ sudo docker export 7691a814370e > ubuntu.tar
|
||||
這樣將導出容器快照到本地文件。
|
||||
|
||||
###導入容器快照
|
||||
可以使用 `docker import` 從容器快照文件中再導入為鏡像,例如
|
||||
可以使用 `docker import` 從容器快照文件中再導入為映像檔,例如
|
||||
```
|
||||
$ cat ubuntu.tar | sudo docker import - test/buntu:v1.0
|
||||
$ 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
|
||||
```
|
||||
|
||||
*註:用戶既可以使用 `docker load` 來導入鏡像存儲文件到本地鏡像庫,也可以使用 `docker import` 來導入一個容器快照到本地鏡像庫。這兩者的區別在於容器快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也要大。此外,從容器快照文件導入時可以重新指定標簽等元數據信息。
|
||||
*註:用戶既可以使用 `docker load` 來導入映像檔儲存文件到本地映像檔庫,也可以使用 `docker import` 來導入一個容器快照到本地映像檔庫。這兩者的區別在於容器快照文件將丟棄所有的歷史記錄和原始數據信息(即僅保存容器當時的快照狀態),而映像檔儲存文件將保存完整記錄,檔案體積也跟著變大。此外,從容器快照文件導入時可以重新指定標簽等原始數據信息。
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
##啟動容器
|
||||
啟動容器有兩種方式,一種是基於鏡像新建一個容器並啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。
|
||||
啟動容器有兩種方式,一種是將映像檔新建一個容器並啟動,另外一個是將終止狀態(stopped)的容器重新啟動。
|
||||
|
||||
因為 Docker 的容器實在太輕量級了,很多時候用戶都是隨時刪除和新創建容器。
|
||||
因為 Docker 的容器實在太輕量級了,用戶可以隨時刪除和新創建容器。
|
||||
|
||||
###新建並啟動
|
||||
所需要的命令主要為 `docker run`。
|
||||
@ -11,14 +11,14 @@
|
||||
$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
|
||||
Hello world
|
||||
```
|
||||
這跟在本地直接執行 `/bin/echo 'hello world'` 幾乎感覺不出任何區別。
|
||||
這跟在本地直接執行 `/bin/echo 'hello world'` 相同, 幾乎感覺不出任何區別。
|
||||
|
||||
下面的命令則啟動一個 bash 終端,允許用戶進行交互。
|
||||
```
|
||||
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
|
||||
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 在後臺執行的標準操作包括:
|
||||
|
||||
* 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
|
||||
* 利用鏡像創建並啟動一個容器
|
||||
* 分配一個文件系統,並在唯讀的鏡像層外面掛載一層可讀寫層
|
||||
* 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
|
||||
* 從地址池配置一個 ip 地址給容器
|
||||
* 檢查本地是否存在指定的映像檔,不存在就從公有倉庫下載
|
||||
* 利用映像檔創建並啟動一個容器
|
||||
* 分配一個文件系統,並在唯讀的映像檔層外面掛載一層可讀寫層
|
||||
* 從宿主主機配置的網路橋接口中橋接一個虛擬埠到容器中去
|
||||
* 從地址堆中配置一個 ip 地址給容器
|
||||
* 執行用戶指定的應用程序
|
||||
* 執行完畢後容器被終止
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
可以使用 `docker stop` 來終止一個執行中的容器。
|
||||
|
||||
此外,當Docker容器中指定的應用終結時,容器也自動終止。
|
||||
例如對於上一章節中只啟動了一個終端的容器,用戶通過 `exit` 命令或 `Ctrl+d` 來退出終端時,所創建的容器立刻終止。
|
||||
例如對於上一章節中只啟動了一個終端機的容器,用戶通過 `exit` 命令或 `Ctrl+d` 來退出終端時,所創建的容器立刻終止。
|
||||
|
||||
終止狀態的容器可以用 `docker ps -a` 命令看到。例如
|
||||
```
|
||||
@ -14,4 +14,4 @@ ba267838cc1b ubuntu:14.04 "/bin/bash" 30 minutes a
|
||||
|
||||
處於終止狀態的容器,可以通過 `docker start` 命令來重新啟動。
|
||||
|
||||
此外,`docker restart` 命令會將一個執行態的容器終止,然後再重新啟動它。
|
||||
此外,`docker restart` 命令會將一個執行中的容器終止,然後再重新啟動它。
|
||||
|
@ -3,14 +3,14 @@
|
||||
Docker 支持 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 docker-io
|
||||
```
|
||||
|
||||
### CentOS7
|
||||
CentOS7 系統 `CentOS-Extras` 庫中已帶 Docker,可以直接安裝:
|
||||
CentOS7 系統 `CentOS-Extras` 庫中已內建 Docker,可以直接安裝:
|
||||
```
|
||||
$ sudo yum install docker
|
||||
```
|
||||
|
@ -1,7 +1,7 @@
|
||||
## Ubuntu 系列安裝 Docker
|
||||
|
||||
### 通過系統自帶包安裝
|
||||
Ubuntu 14.04 版本系統中已經自帶了 Docker 包,可以直接安裝。
|
||||
### 通過系統內建套件安裝
|
||||
Ubuntu 14.04 版本套件庫中已經內建了 Docker 套件,可以直接安裝。
|
||||
```
|
||||
$ sudo apt-get update
|
||||
$ 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
|
||||
```
|
||||
|
||||
如果使用作業系統自帶包安裝 Docker,目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過使用 Docker 源的方式。
|
||||
如果使用作業系統內建套件安裝 Docker,目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過更新 Docker 套件庫的方式進行安裝。
|
||||
|
||||
### 通過Docker源安裝最新版本
|
||||
要安裝最新的 Docker 版本,首先需要安裝 apt-transport-https 支持,之後通過添加源來安裝。
|
||||
### 通過Docker 套件庫安裝最新版本
|
||||
要安裝最新的 Docker 版本,首先需要安裝 apt-transport-https 支持,之後通過添加套件庫來安裝。
|
||||
```
|
||||
$ sudo apt-get install apt-transport-https
|
||||
$ 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 之前版本
|
||||
如果是較低版本的 Ubuntu 系統,需要先更新內核。
|
||||
如果是較舊版本的 Ubuntu 系統,需要先更新核心。
|
||||
```
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
|
||||
|
@ -1,8 +1,8 @@
|
||||
# 倉庫
|
||||
|
||||
倉庫(Repository)是集中存放鏡像的地方。
|
||||
倉庫(Repository)是集中存放映像檔的地方。
|
||||
|
||||
一個容易混淆的概念是註冊服務器(Registry)。實際上註冊服務器是管理倉庫的具體服務器,每個服務器上可以有多個倉庫,而每個倉庫下面有多個鏡像。從這方面來說,倉庫可以被認為是一個具體的項目或目錄。例如對於倉庫地址 `dl.dockerpool.com/ubuntu` 來說,`dl.dockerpool.com` 是註冊服務器地址,`ubuntu` 是倉庫名。
|
||||
一個容易混淆的概念是註冊伺服器(Registry)。實際上註冊伺服器是管理倉庫的具體伺服器,每個伺服器上可以有多個倉庫,而每個倉庫下面有多個映像檔。從這方面來說,倉庫可以被認為是一個具體的項目或目錄。例如對於倉庫地址 `dl.dockerpool.com/ubuntu` 來說,`dl.dockerpool.com` 是註冊伺服器地址,`ubuntu` 是倉庫名。
|
||||
|
||||
大部分時候,並不需要嚴格區分這兩者的概念。
|
||||
|
||||
|
@ -1,30 +1,30 @@
|
||||
## 倉庫配置文件
|
||||
Docker 的 Registry 利用配置文件提供了一些倉庫的模板(flavor),用戶可以直接使用它們來進行開發或生產部署。
|
||||
Docker 的 Registry 利用配置文件提供了一些倉庫的模組(flavor),用戶可以直接使用它們來進行開發或生產部署。
|
||||
|
||||
### 模板
|
||||
在 `config_sample.yml` 文件中,可以看到一些現成的模板段:
|
||||
### 模組
|
||||
在 `config_sample.yml` 文件中,可以看到一些現成的模組段:
|
||||
* `common`:基礎配置
|
||||
* `local`:存儲數據到本地文件系統
|
||||
* `s3`:存儲數據到 AWS S3 中
|
||||
* `dev`:使用 `local` 模板的基本配置
|
||||
* `local`:儲存數據到本地文件系統
|
||||
* `s3`:儲存數據到 AWS S3 中
|
||||
* `dev`:使用 `local` 模組的基本配置
|
||||
* `test`:單元測試使用
|
||||
* `prod`:生產環境配置(基本上跟s3配置類似)
|
||||
* `gcs`:存儲數據到 Google 的雲存儲
|
||||
* `swift`:存儲數據到 OpenStack Swift 服務
|
||||
* `glance`:存儲數據到 OpenStack Glance 服務,本地文件系統為後備
|
||||
* `glance-swift`:存儲數據到 OpenStack Glance 服務,Swift 為後備
|
||||
* `elliptics`:存儲數據到 Elliptics key/value 存儲
|
||||
* `gcs`:儲存數據到 Google 的雲端
|
||||
* `swift`:儲存數據到 OpenStack Swift 服務
|
||||
* `glance`:儲存數據到 OpenStack Glance 服務,本地文件系統為後備
|
||||
* `glance-swift`:儲存數據到 OpenStack Glance 服務,Swift 為後備
|
||||
* `elliptics`:儲存數據到 Elliptics key/value 存儲
|
||||
|
||||
用戶也可以添加自定義的模版段。
|
||||
|
||||
默認情況下使用的模板是 `dev`,要使用某個模板作為默認值,可以添加 `SETTINGS_FLAVOR` 到環境變量中,例如
|
||||
預設情況下使用的模組是 `dev`,要使用某個模組作為預設值,可以添加 `SETTINGS_FLAVOR` 到環境變數中,例如
|
||||
```
|
||||
export SETTINGS_FLAVOR=dev
|
||||
```
|
||||
|
||||
另外,配置文件中支持從環境變量中加載值,語法格式為 `_env:VARIABLENAME[:DEFAULT]`。
|
||||
另外,配置文件中支持從環境變數中加載值,語法格式為 `_env:VARIABLENAME[:DEFAULT]`。
|
||||
|
||||
### 示例配置
|
||||
### 範例配置
|
||||
```
|
||||
common:
|
||||
loglevel: info
|
||||
|
@ -1,14 +1,14 @@
|
||||
## 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` 命令來輸入用戶名、密碼和郵箱來完成註冊和登錄。
|
||||
註冊成功後,本地用戶目錄的 `.dockercfg` 中將保存用戶的認證信息。
|
||||
可以通過執行 `docker login` 命令來輸入用戶名稱、密碼和電子信箱來完成註冊和登錄。
|
||||
註冊成功後,本地用戶目錄的 `.dockercfg` 中將保存用戶的認證訊息。
|
||||
|
||||
### 基本操作
|
||||
用戶無需登錄即可通過 `docker search` 命令來查找官方倉庫中的鏡像,並利用 `docker pull` 命令來將它下載到本地。
|
||||
用戶無需登錄即可通過 `docker search` 命令來查詢官方倉庫中的映像檔,並利用 `docker pull` 命令來將它下載到本地。
|
||||
|
||||
例如以 centos 為關鍵詞進行搜索:
|
||||
例如以 centos 為關鍵字進行搜索:
|
||||
```
|
||||
$ sudo docker search centos
|
||||
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]
|
||||
...
|
||||
```
|
||||
可以看到返回了很多包含關鍵字的鏡像,其中包括鏡像名字、描述、星級(表示該鏡像的受歡迎程度)、是否官方創建、是否自動創建。
|
||||
官方的鏡像說明是官方項目組創建和維護的,automated 資源允許用戶驗證鏡像的來源和內容。
|
||||
可以看到顯示了很多包含關鍵字的映像檔,其中包括映像檔名字、描述、星級(表示該映像檔的受歡迎程度)、是否官方創建、是否自動創建。
|
||||
官方的映像檔說明是官方項目組創建和維護的,automated 資源允許用戶驗證映像檔的來源和內容。
|
||||
|
||||
根據是否是官方提供,可將鏡像資源分為兩類。
|
||||
一種是類似 centos 這樣的基礎鏡像,被稱為基礎或根鏡像。這些基礎鏡像是由 Docker 公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。
|
||||
還有一種類型,比如 `tianon/centos` 鏡像,它是由 Docker 的用戶創建並維護的,往往帶有用戶名稱前綴。可以通過前綴 `user_name/` 來指定使用某個用戶提供的鏡像,比如 tianon 用戶。
|
||||
根據是否是官方提供,可將映像檔資源分為兩類。
|
||||
一種是類似 centos 這樣的基礎映像檔,被稱為基礎或根映像檔。這些基礎映像檔是由 Docker 公司創建、驗證、支持、提供。這樣的映像檔往往使用單個單詞作為名字。
|
||||
還有一種類型,比如 `tianon/centos` 映像檔,它是由 Docker 的用戶創建並維護的,往往帶有用戶名稱前綴。可以通過前綴 `user_name/` 來指定使用某個用戶提供的映像檔,比如 tianon 用戶。
|
||||
|
||||
另外,在查找的時候通過 `-s N` 參數可以指定僅顯示評價為 `N` 星以上的鏡像。
|
||||
另外,在查詢的時候通過 `-s N` 參數可以指定僅顯示評價為 `N` 星以上的映像檔。
|
||||
|
||||
下載官方 centos 鏡像到本地。
|
||||
下載官方 centos 映像檔到本地。
|
||||
```
|
||||
$ sudo docker pull centos
|
||||
Pulling repository centos
|
||||
@ -37,11 +37,11 @@ Pulling repository centos
|
||||
511136ea3c5a: 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))上的項目,一旦項目發生新的提交,則自動執行創建。
|
||||
|
||||
|
@ -4,15 +4,15 @@
|
||||
|
||||
本節介紹如何使用本地倉庫。
|
||||
|
||||
`docker-registry` 是官方提供的工具,可以用於構建私有的鏡像倉庫。
|
||||
`docker-registry` 是官方提供的工具,可以用於構建私有的映像檔倉庫。
|
||||
### 安裝執行 docker-registry
|
||||
#### 容器執行
|
||||
在安裝了 Docker 後,可以通過獲取官方 registry 鏡像來執行。
|
||||
在安裝了 Docker 後,可以通過獲取官方 registry 映像檔來執行。
|
||||
```
|
||||
$ sudo docker run -d -p 5000:5000 registry
|
||||
```
|
||||
這將使用官方的 registry 鏡像來啟動本地的私有倉庫。
|
||||
用戶可以通過指定參數來配置私有倉庫位置,例如配置鏡像存儲到 Amazon S3 服務。
|
||||
這將使用官方的 registry 映像檔來啟動本地的私有倉庫。
|
||||
用戶可以通過指定參數來配置私有倉庫位置,例如配置映像檔存儲到 Amazon S3 服務。
|
||||
```
|
||||
$ sudo docker run \
|
||||
-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
|
||||
```
|
||||
默認情況下,倉庫會被創建在容器的 `/tmp/registry` 下。可以通過 `-v` 參數來將鏡像文件存放在本地的指定路徑。
|
||||
例如下面的例子將上傳的鏡像放到 `/opt/data/registry` 目錄。
|
||||
預設情況下,倉庫會被創建在容器的 `/tmp/registry` 下。可以通過 `-v` 參數來將映像檔文件存放在本地的指定路徑。
|
||||
例如下面的例子將上傳的映像檔放到 `/opt/data/registry` 目錄。
|
||||
```
|
||||
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
|
||||
```
|
||||
|
||||
#### 本地安裝
|
||||
對於 Ubuntu 或 CentOS 等發行版,可以直接通過源安裝。
|
||||
對於 Ubuntu 或 CentOS 等發行版,可以直接通過套件庫安裝。
|
||||
* Ubuntu
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
|
||||
也可以從 [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
|
||||
$ git clone https://github.com/docker/docker-registry.git
|
||||
$ cd docker-registry
|
||||
$ sudo python setup.py install
|
||||
```
|
||||
然後修改配置文件,主要修改 dev 模板段的 `storage_path` 到本地的存儲倉庫的路徑。
|
||||
然後修改配置文件,主要修改 dev 模板段的 `storage_path` 到本地的儲存倉庫的路徑。
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
此時使用訪問本地的 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
|
||||
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
|
||||
```
|
||||
|
||||
使用`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
|
||||
root ~ # docker images
|
||||
@ -90,7 +90,7 @@ ubuntu 14.04 ba5877dc9bec 6 week
|
||||
ubuntu 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
|
||||
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
|
||||
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
|
||||
{"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
|
||||
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
|
||||
```
|
||||
|
||||
可以使用 [這個腳本](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
|
||||
$ ./push_images.sh ubuntu:latest centos:centos7
|
||||
|
Loading…
Reference in New Issue
Block a user