Docker映象包的製作

2021-08-30 08:52:44 字數 2548 閱讀 1259

我們知道,要建立乙個docker容器,要先有docker映象,docker映象怎麼建立的呢,一般有兩種建立方式: 

1. 根據基礎映象,生成新映象 

2. 使用dockerfile生成映象

在製作映象之前,先看下怎麼查詢映象

列出所有在主機上的映象 

docker images列出所有映象

我主機上有兩個映象centos和ubuntu,我們在映象列表中看到三個至關重要的東西。 

- 映象源,例如 ubuntu 

- 映象的標籤(tags),例如 latest 

- 映象id,每個映象都有映象id

從dockerhub中查詢映象 

dockerhub是遠端映象倉庫,儲存種各樣的映象,可以從dockerhub官網上搜尋你想要的映象 

也可以在本機使用docker search 查詢 dockerhub上的映象 

知道映象的查詢方式後,下來我們開始製作映象

下面開始基於映象執行乙個容器,修改容器內容,重新commit生成新映象 

這裡容器id(9dc737402a4d)已經生成,並已進入到容器中,在執行的容器內建立乙個text.txt的檔案,然後exit退出容器 

使用docker commit生成新映象

這裡我們指定了兩個標識(flags) -m 和 -a 。-m 標識我們指定提交的資訊,就像你提交乙個版本控制。-a 標識允許對我們的更新來指定乙個作者,最後用docker images檢視映象發現新映象已經生成了

驗證: 

執行新映象生成容器,到容器中檢視是否存在剛才建立的text.txt檔案

經驗證後發現,在新生成的容器中,存在有剛建立的text.txt檔案,說明新映象已經生效

2. 使用dockerfile生成映象

使用 docker commit 命令能夠能快速的建立乙個新映象,但是有點麻煩,並且在乙個團隊中也不能夠輕易的共享它的開發過程。因此我們使用乙個新的命令 docker build , 從零開始來建立乙個新的映象。我們需要建立乙個 dockerfile 檔案,其中包含一組指令來告訴 docker 如何構建我們的映象。

現在建立乙個 dockerfile,內容如下:

# this is a comment

from ubuntu:latest

maintainer longwentao run apt-get update && apt-get install -y ruby ruby-dev

run gem install sinatra

第乙個指令 from 是告訴 docker 使用的哪個映象源,這裡我們使用的是 ubuntu:latest 基礎映象。

下一步,我們使用 maintainer 指令來指定誰在維護這個新映象。

最後,我們指定了兩個 run 指令。 run 指令在映象內執行一條命令,例如:安裝乙個包。這裡我們更新了 apt 的快取,並且安裝 ruby 和 rubygems ,然後使用 gem 安裝 sinatra映象

現在,我們使用 dockerfile 檔案,通過 docker build 命令來構建乙個映象

我們使用 docker build 命令並指定 -t 標識(flag)來標示屬於 longwentao,映象名稱為 sinatra,標籤是 v2。

如果 dockerfile 在我們當前目錄下,我們可以使用 . 來指定 dockerfile

我們可以看到構建過程,docker 做的第一件事是通過上下文進行構建,基本上是目錄的內容構建。這樣做是因為 docker 程序構建映象是實時構建的,並且是需要本地的上下文來做這些工作的。(這裡上下文是指context)

下一步,dockerfile 中的每一條命令都一步一步的被執行。我們會看到每一步都會建立乙個新的容器,在容器內部執行指令並且提交更改,就像docker commit 一樣。當所有的指令執行完成之後,我們會得到97feabe5d2ed 映象,然後所有中間容器會被清除。

製作docker映象

命令docker build,從零開始來建立乙個新的映象。為此,我們需要建立乙個 dockerfile 檔案,其中包含一組指令來告訴 docker 如何構建我們的映象 指定基礎映象 from openjdk 8 dockerfile使用變數 可以在dockerfile中進行引用 工作目錄 指定ver...

製作docker映象

基礎環境說明 cat etc redhat release centos release 6.8 final 設定 docker 映象源 yum install y yum priorities rpm ivh rpm import etc pki rpm gpg rpm gpg key epel ...

Docker映象製作

copy on write 寫時複製 docker映象實際上乙個檔案系統,但只有頂層可以讀寫。dockerfile是軟體的原材料,docker映象是軟體的交付品,而docker容器則可以認為是軟體的執行態。從應用軟體的角度來看,dockerfile docker映象與docker容器分別代表軟體的三...