whalesay鏡像能夠作到的更好, 尤爲是當你不知道本身想要說什麼的時候. 你能夠輸入更多的命令來讓它發聲docker run docker/whalesay cowsay boo-boo
在接下來,咱們將會改進whalesay,構建一個新版本的鏡像讓他能夠「自由說話」docker
在這一步,用你喜歡的編輯器寫一個簡單的Dockerfile文件,一個Dockerfile文件描述了「刻錄(baked)」到鏡像裏去的軟件信息,還有,文件還會告訴軟件使用什麼樣的環境或者運行什麼樣的命令。咱們要寫的文件信息將會很簡短。ubuntu
$ mkdir mydockerbuild
編輯器
這個目錄就是你等會構建鏡像的「上下文」,意味着你構建用的的東西都包含在這裏
$ cd mydockerbuild
目錄目前爲空學習
建立Dockerfileui
$ touch Dockerfile
this
打開Dockerfile,用可視化編輯器或vi都行spa
向文件裏添加一行.net
FROM docker/whalesay:latest
命令行
FROM關鍵字的意思是指咱們要基於哪一個鏡像來構建,這裏咱們基於以前的whalesay來構建rest
如今將fortunes軟件添加到鏡像
RUN apt-get -y update && apt-get install -y fortunes
fortunes軟件有個命令能夠打印出說諺語的小鯨魚,那咱們第一步就安裝它。這條指令就是將fortunes安裝到鏡像裏去
有了須要的軟件,通知軟件在鏡像加載的時候運行
CMD /usr/games/fortune -a | cowsay
這條指令是告訴fortunes軟件傳一個諺語到cowsay軟件
檢查你的文件,應該和下面同樣:
FROM docker/whalesay:latest RUN apt-get -y update && apt-get install -y fortunes CMD /usr/games/fortune -a | cowsay
進入到Dockerfile所在的目錄
使用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沒有去下載任何東西,那是由於咱們構建的鏡像已是在本地了