構建你本身的鏡像

目錄

whalesay鏡像能夠作到的更好, 尤爲是當你不知道本身想要說什麼的時候. 你能夠輸入更多的命令來讓它發聲.docker

docker run docker/whalesay cowsay boo-booubuntu

在接下來的部分, 你會改進並構建一個新的版本, 這個版本只須要很是少的命令就可讓他」自說自話」.學習

第一步: 寫Dockerfile

在此步驟中,你使用Mac文本編輯程序來編寫一個簡短Dockerfile。一個Dockerfile文件描述了軟件被」燒錄」到鏡像中. 他不是輔助性的, 這個文件能夠告訴你軟件的運行環境或者是運行的命令, 這個清單文件是很是.ui

若是你尚未打開終端, 那如今打開吧:this

  1. 打開Launchpad, 找到Docker Quickstart Terminal圖標spa

    這裏寫圖片描述

  2. 點擊Docker Quickstart Terminal圖標, 打開一個窗口..net

  3. 將光標定位到Docker Quickstart Terminal命令行

  4. 經過命令mkdir mydockerbuild建立一個新的文件夾rest

    mkdir mydockerbuildcode

    這個目錄就至關於一個你構建是的」環境」. 這個」環境」意味着構建鏡像時你包含的全部東西

  5. 進入到你新建的文件夾

    cd mydockerbuild

    當前的這個文件夾是空的.

  6. 經過命令touch Dockerfile在這個文件夾下建立一個Dockerfile文件

    $ touch Dockerfile

    這個命令不會有任何回饋, 可是它確實建立了Dockerfile文件在當前的文件夾. 能夠輸入ls Dockerfile來查看

    $ ls Dockerfile
    Dockerfile
  7. 如今,輸入open -e Dockerfile在Mac的TextEdit程序中打開這個文件

    你的Mac使用TextEdit程序打開了一個空的文件

    這裏寫圖片描述

  8. 在打開的文件中輸入FROM docker/whalesay:latest
    如今, 看起來應該是這樣的:

    這裏寫圖片描述

    關鍵字FROM告訴Docker你的鏡像是基於哪一個鏡像構建的. 你是基於已經存在的whalesay鏡像建立新的工做

  9. 如今, 添加fortunes程序到鏡像

    這裏寫圖片描述

    fortunes程序是一個讓whale聰明的說出語句的命令. 因此, 咱們須要先安裝這個程序. 這一行使用了apt-get命令安裝fortunes, 若是這些對你來講很難理解, 不用擔憂, 只要你輸入正確, 他們就會正常運行的.

  10. 一旦鏡像有了它所需的軟件, 就能夠在命令他在加載鏡像的時候運行軟件.

    這裏寫圖片描述

    這一行是告訴fortune程序發送一個俏皮的引用給cowsay程序

  11. 在TextEdit菜單中選擇文件 > 保存或者按CMD+S保存Dockerfile

    在這一點上,你在一個Dockerfile描述的全部軟件成分和行爲。您準備創建一個新的形象。

第二步: 根據Dockerfile構建你的鏡像

  1. 將你的光標從新定位到Docker Quickstart Terminal上

  2. mkdir docker-whale

  3. cd docker-whale

  4. touch Dockerfile

  5. open -e Dockerfile

  6. 輸入&保存

    FROM docker/whalesay:latest
    
    RUN apt-get -y update && apt-get install -y fortunes
    
    CMD /usr/games/fortune -a | cowsay

     

  7. 在當前文件夾下輸入cat Dockerfile確認一下Dockerfile是否正確:

    $ cat Dockerfile
    FROM docker/whalesay:latest
    
    RUN apt-get -y update && apt-get install -y fortunes
    
    CMD /usr/games/fortune -a | cowsay
  8. 如今, 在終端中輸入docker build -t docker-whale .構建你的新鏡像(不要遺漏 . )
$ docker build -t docker-whale .
Sending build context to Docker daemon 158.8 MB
...snip...
Removing intermediate container a8e6faa88df3
Successfully built 7d9495d03763

該命令須要幾秒鐘運行並報告其結果。在你使用新的鏡像以前,花一點時間瞭解Dockerfile構建過程。

第三步: 學習構建過程

命令docker build -t docker-whale .會在本機使用當前目錄下的Dockerfile構建一個叫docker-whale的鏡像. 這個命令會運行大概一分鐘的時間, 輸出的內容看起來很長並且很複雜. 在這一部分, 你會學習到這些輸出所表示的內容.

首先Docker會檢查全部須要構建的內容.

Sending build context to Docker daemon 158.8 MB

而後, Docker加載whalesay鏡像. 它是一個已經存在的, 不須要下載的鏡像.

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

Docker進行下一步更新apt-get包管理器. 會輸出不少, 不必在一一列舉

Step 1 : 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軟件

Removing intermediate container e2a84b5f390f
Step 2 : RUN apt-get install -y fortunes
 ---> Running in 23aa52c1897c
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 bsdmainutils
The following NEW packages will be installed:
  fortune-mod fortunes fortunes-min librecode0
0 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

最後, Docker完成構建並輸入結果

Step 3 : CMD /usr/games/fortune -a | cowsay
 ---> Running in a8e6faa88df3  ---> 7d9495d03763 Removing intermediate container a8e6faa88df3
Successfully built 7d9495d03763

第四步: 運行新的鏡像docker-whale

在此步驟中,在你的計算機上驗證並運行新的鏡像

  1. 若是已不存在,請將光標在Docker Quickstart Terminal窗口的提示。

  2. 輸入docker images
    這個命令,你可能還記得,列出了在本地的圖像。

    $ docker images
    REPOSITORY           TAG          IMAGE ID          CREATED             VIRTUAL 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
  3. 輸入docker run docker-whale命令運行新的鏡像

    $ docker run docker-whale
     _________________________________________
    / "He was a modest, good-humored boy. It \ \ was Oxford that made him insufferable." /
     -----------------------------------------
          \
           \
            \     
                          ## . 
                    ## ## ## == 
                 ## ## ## ## === 
             /""""""""""""""""___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/

    正如你所看到的,你所作的whale聰明不少。它發現本身的東西,說和命令行是短了不少!您可能還注意到,Docker沒有下載任何東西。這是由於鏡像在構建的時候已經可用。

下一步去哪裏

在這一章節,你學會了寫本身的Dockerfile創建鏡像。你在一個容器中運行你的鏡像。你也剛用過Linux與Mac的又一次。在下一節中,你採起經過建立一個Docker Hub賬戶分享你的鏡像.

相關文章
相關標籤/搜索