初識Docker:構建本身的鏡像

構建本身的鏡像

whalesay鏡像能夠作到的更好, 尤爲是當你不知道本身想要說什麼的時候. 你能夠輸入更多的命令來讓它發聲docker run docker/whalesay cowsay boo-boo在接下來,咱們將會改進whalesay,構建一個新版本的鏡像讓他能夠「自由說話」docker

Step1:編寫一個Dockerfile文件

在這一步,用你喜歡的編輯器寫一個簡單的Dockerfile文件,一個Dockerfile文件描述了「刻錄(baked)」到鏡像裏去的軟件信息,還有,文件還會告訴軟件使用什麼樣的環境或者運行什麼樣的命令。咱們要寫的文件信息將會很簡短。ubuntu

  1. 進入命令行窗口
  2. 建立一個新目錄mydockerbuild來存放要寫的Dockerfile

$ mkdir mydockerbuild編輯器

這個目錄就是你等會構建鏡像的「上下文」,意味着你構建用的的東西都包含在這裏
  1. 進入到mydockerbuild目錄

$ cd mydockerbuild
目錄目前爲空學習

  1. 建立Dockerfileui

    $ touch Dockerfilethis

  2. 打開Dockerfile,用可視化編輯器或vi都行spa

  3. 向文件裏添加一行.net

    FROM docker/whalesay:latest命令行

FROM關鍵字的意思是指咱們要基於哪一個鏡像來構建,這裏咱們基於以前的whalesay來構建rest

  1. 如今將fortunes軟件添加到鏡像

    RUN apt-get -y update && apt-get install -y fortunes

    fortunes軟件有個命令能夠打印出說諺語的小鯨魚,那咱們第一步就安裝它。這條指令就是將fortunes安裝到鏡像裏去

  2. 有了須要的軟件,通知軟件在鏡像加載的時候運行

    CMD /usr/games/fortune -a | cowsay

    這條指令是告訴fortunes軟件傳一個諺語到cowsay軟件

  3. 檢查你的文件,應該和下面同樣:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes

CMD /usr/games/fortune -a | cowsay
  1. 保存退出編輯

Step2:使用Dockerfile構建鏡像

  1. 進入到Dockerfile所在的目錄

  2. 使用docker build -t docker-whale .命令構建(不要忘了後面的.

     

$ docker build -t docker-whale . Sending build context to Docker daemon 2.048 kB ...snip... Removing intermediate container a8e6faa88df3 Successfully built 7d9495d03763

該命令將會花費幾秒的時間,打印出構建信息(因爲篇幅省略部分,下文會描述詳細信息)。在你使用這個鏡像以前,先花點時間來了解下Dockerfile的構建過程是怎樣的。

## Step3:學習構建過程

命令`docker build -t docker-whale .`會找到當前目錄下的Dockerfile文件,而且在你本地構建一個名叫`docker-whale`的鏡像。過程會花費些時間並打印出看上去很長很複雜的信息。接下來,你將學習每一條信息的含義。

首先Docker會檢查確保它擁有構建所需的所有東西,發送到Docker引擎

Sending build context to Docker daemon 2.048 kB

而後,Docker加載whalesay鏡像。由於whalesay鏡像本地已經存在了,就不會去從新下載

Step 1 : FROM docker/whalesay:latest ---> fb434121fc77

下一步是去更新`apt-get`包。有不少行,不必所有顯示在這

Step 2 : RUN apt-get -y update && apt-get install -y fortunes ---> Running in 27d224dfa5b2 Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Ign http://archive.ubuntu.com trusty-security InRelease Hit http://archive.ubuntu.com trusty Release.gpg ....snip... Get:15 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [14.8 kB] Get:16 http://archive.ubuntu.com trusty-security/universe amd64 Packages [134 kB] Reading package lists... ---> eb06e47a01d2

接下來,Docker安裝新軟件fortunes

Reading package lists... Building dependency tree... Reading state information... The following extra packages will be installed:
fortune-mod fortunes-min librecode0 Suggested packages:
x11-utils bsdmainutilsThe following NEW packages will be installed: fortune-mod fortunes fortunes-min librecode00 upgraded, 4 newly installed, 0 to remove and 3 not upgraded. Need to get 1961 kB of archives. After this operation, 4817 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main librecode0 amd64 3.6-21 [771 kB] ...snip...... Setting up fortunes (1:1.99.1-7) ... Processing triggers for libc-bin (2.19-0ubuntu6.6) ... ---> c81071adeeb5 Removing intermediate container 23aa52c1897c

## Step4:運行你新構建的`docker-whale`

在這一步,咱們要驗證新的鏡像已經存在本地,而後運行起來

1. 進入命令行,輸入`docker images`命令按回車    
這條命令就是顯示本地存在的鏡像

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-whale latest 7d9495d03763 4 minutes ago 273.7 MB docker/whalesay latest fb434121fc77 4 hours ago 247 MB hello-world latest 91c95931e552 5 weeks ago 910 B

2. 輸入命令` docker run docker-whale `運行新的鏡像    
![輸入圖片說明](https://static.oschina.net/uploads/img/201611/24194852_SUxU.jpg "在這裏輸入圖片標題")

你看,如今這條小鯨魚聰明多了。咱們輸入命令比之前短了,小鯨魚會本身找話說!你可能注意到Docker沒有去下載任何東西,那是由於咱們構建的鏡像已是在本地了
相關文章
相關標籤/搜索