mirror of
https://github.com/yeasy/docker_practice.git
synced 2025-08-06 07:32:04 +00:00
修正多個用詞
"s/程序/程式/g" "s/性能/效能/g" "s/如下/以下/g" "s/加載/載入/g" "s/獲取/取得/g" "s/服務器/伺服器/g" "s/信息/訊息/g" "s/註釋/註解/g" "s/裏/裡/g" "s/構建/建立/g" "s/配置/設定/g"
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
在之前的介紹中,我們知道鏡像是 Docker 的三大組件之一。
|
||||
|
||||
Docker 在執行容器前需要本地存在對應的鏡像,如果鏡像不存在本地,Docker 會從鏡像倉庫下載(預設是 Docker Hub 公共註冊服務器中的倉庫)。
|
||||
Docker 在執行容器前需要本地存在對應的鏡像,如果鏡像不存在本地,Docker 會從鏡像倉庫下載(預設是 Docker Hub 公共註冊伺服器中的倉庫)。
|
||||
|
||||
本章將介紹更多關於鏡像的內容,包括:
|
||||
* 從倉庫獲取鏡像;
|
||||
* 從倉庫取得鏡像;
|
||||
* 管理本地主機上的鏡像;
|
||||
* 介紹鏡像實做的基本原理。
|
||||
|
@@ -1,6 +1,6 @@
|
||||
##建立鏡像
|
||||
|
||||
建立鏡像有很多方法,使用者可以從 Docker Hub 獲取已有鏡像並更新,也可以利用本地文件系統建立一個。
|
||||
建立鏡像有很多方法,使用者可以從 Docker Hub 取得已有鏡像並更新,也可以利用本地文件系統建立一個。
|
||||
|
||||
### 修改已有鏡像
|
||||
先使用下載的鏡像啟動容器。
|
||||
@@ -19,7 +19,7 @@ root@0b2616b0e5a8:/# gem install json
|
||||
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
|
||||
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
|
||||
```
|
||||
其中,`-m` 來指定提交的說明信息,跟我們使用的版本控制工具一樣;`-a` 可以指定更新的使用者信息;之後是用來建立鏡像的容器的 ID;最後指定目標鏡像的倉庫名和 tag 信息。建立成功後會返回這個鏡像的 ID 信息。
|
||||
其中,`-m` 來指定提交的說明訊息,跟我們使用的版本控制工具一樣;`-a` 可以指定更新的使用者訊息;之後是用來建立鏡像的容器的 ID;最後指定目標鏡像的倉庫名和 tag 訊息。建立成功後會返回這個鏡像的 ID 訊息。
|
||||
|
||||
|
||||
使用 `docker images` 來查看新建立的鏡像。
|
||||
@@ -55,10 +55,10 @@ RUN apt-get -qqy install ruby ruby-dev
|
||||
RUN gem install sinatra
|
||||
```
|
||||
Dockerfile 基本的語法是
|
||||
* 使用`#`來註釋
|
||||
* 使用`#`來註解
|
||||
* `FROM` 指令告訴 Docker 使用哪個鏡像作為基礎
|
||||
* 接著是維護者的信息
|
||||
* `RUN`開頭的指令會在建立中執行,比如安裝一個軟件包,在這裏使用 apt-get 來安裝了一些軟件
|
||||
* 接著是維護者的訊息
|
||||
* `RUN`開頭的指令會在建立中執行,比如安裝一個軟件包,在這裡使用 apt-get 來安裝了一些軟件
|
||||
|
||||
編寫完成 Dockerfile 後可以使用 `docker build` 來生成鏡像。
|
||||
|
||||
@@ -96,15 +96,15 @@ Successfully installed sinatra-1.4.5
|
||||
Removing intermediate container 5e9d0065c1f7
|
||||
Successfully built 324104cde6ad
|
||||
```
|
||||
其中 `-t` 標記來新增 tag,指定新的鏡像的使用者信息。
|
||||
其中 `-t` 標記來新增 tag,指定新的鏡像的使用者訊息。
|
||||
“.” 是 Dockerfile 所在的路徑(當前目錄),也可以替換為一個具體的 Dockerfile 的路徑。
|
||||
|
||||
可以看到 build 程序在執行操作。它要做的第一件事情就是上傳這個 Dockerfile 內容,因為所有的操作都要依據 Dockerfile 來進行。
|
||||
可以看到 build 程式在執行操作。它要做的第一件事情就是上傳這個 Dockerfile 內容,因為所有的操作都要依據 Dockerfile 來進行。
|
||||
然後,Dockfile 中的指令被一條一條的執行。每一步都建立了一個新的容器,在容器中執行指令並提交修改(就跟之前介紹過的 `docker commit` 一樣)。當所有的指令都執行完畢之後,返回了最終的鏡像 id。所有的中間步驟所產生的容器都被刪除和清理了。
|
||||
|
||||
*註意一個鏡像不能超過 127 層
|
||||
|
||||
此外,還可以利用 `ADD` 命令復制本地文件到鏡像;用 `EXPOSE` 命令來向外部開放端口;用 `CMD` 命令來描述容器啟動後執行的程序等。例如
|
||||
此外,還可以利用 `ADD` 命令復制本地文件到鏡像;用 `EXPOSE` 命令來向外部開放端口;用 `CMD` 命令來描述容器啟動後執行的程式等。例如
|
||||
```
|
||||
# put my local web site in myApp folder to /var/www
|
||||
ADD myApp /var/www
|
||||
|
@@ -4,4 +4,4 @@ Docker 鏡像是怎麽實做增量的修改和維護的?
|
||||
每個鏡像都由很多層次構成,Docker 使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 將這些不同的層結合到一個鏡像中去。
|
||||
|
||||
通常 Union FS 有兩個用途, 一方面可以實做不借助 LVM、RAID 將多個 disk 掛到同一個目錄下,另一個更常用的就是將一個唯讀的分支和一個可寫的分支聯合在一起,Live CD 正是基於此方法可以允許在鏡像不變的基礎上允許使用者在其上進行一些寫操作。
|
||||
Docker 在 AUFS 上構建的容器也是利用了類似的原理。
|
||||
Docker 在 AUFS 上建立的容器也是利用了類似的原理。
|
||||
|
@@ -21,7 +21,7 @@ ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB
|
||||
|
||||
其中鏡像的 `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
|
||||
```
|
||||
|
@@ -1,6 +1,6 @@
|
||||
## 獲取映像檔
|
||||
## 取得映像檔
|
||||
|
||||
可以使用 `docker pull` 命令來從倉庫獲取所需要的映像檔。
|
||||
可以使用 `docker pull` 命令來從倉庫取得所需要的映像檔。
|
||||
|
||||
下面的例子將從 Docker Hub 倉庫下載一個 Ubuntu 12.04 作業系統的映像檔。
|
||||
```
|
||||
@@ -14,12 +14,12 @@ a300658979be: Download complete
|
||||
ffdaafd1ca50: 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
|
||||
Pulling dl.dockerpool.com:5000/ubuntu
|
||||
|
@@ -19,4 +19,4 @@ $ sudo docker load --input ubuntu_14.04.tar
|
||||
```
|
||||
$ sudo docker load < ubuntu_14.04.tar
|
||||
```
|
||||
這將導入鏡像以及其相關的元數據信息(包括標簽等)。
|
||||
這將導入鏡像以及其相關的元數據訊息(包括標簽等)。
|
||||
|
Reference in New Issue
Block a user