whalesay鏡像能夠作到的更好, 尤爲是當你不知道本身想要說什麼的時候. 你能夠輸入更多的命令來讓它發聲.docker
docker run docker/whalesay cowsay boo-boo
ubuntu
在接下來的部分, 你會改進並構建一個新的版本, 這個版本只須要很是少的命令就可讓他」自說自話」.學習
在此步驟中,你使用Mac文本編輯程序來編寫一個簡短Dockerfile。一個Dockerfile文件描述了軟件被」燒錄」到鏡像中. 他不是輔助性的, 這個文件能夠告訴你軟件的運行環境或者是運行的命令, 這個清單文件是很是.ui
若是你尚未打開終端, 那如今打開吧:this
打開Launchpad, 找到Docker Quickstart Terminal圖標spa
點擊Docker Quickstart Terminal圖標, 打開一個窗口..net
將光標定位到Docker Quickstart Terminal命令行
經過命令mkdir mydockerbuild
建立一個新的文件夾rest
mkdir mydockerbuild
code
這個目錄就至關於一個你構建是的」環境」. 這個」環境」意味着構建鏡像時你包含的全部東西
進入到你新建的文件夾
cd mydockerbuild
當前的這個文件夾是空的.
經過命令touch Dockerfile
在這個文件夾下建立一個Dockerfile文件
$ touch Dockerfile
這個命令不會有任何回饋, 可是它確實建立了Dockerfile文件在當前的文件夾. 能夠輸入ls Dockerfile
來查看
$ ls Dockerfile Dockerfile
如今,輸入open -e Dockerfile
在Mac的TextEdit程序中打開這個文件
你的Mac使用TextEdit程序打開了一個空的文件
在打開的文件中輸入FROM docker/whalesay:latest
如今, 看起來應該是這樣的:
關鍵字FROM告訴Docker你的鏡像是基於哪一個鏡像構建的. 你是基於已經存在的whalesay鏡像建立新的工做
如今, 添加fortunes程序到鏡像
fortunes程序是一個讓whale聰明的說出語句的命令. 因此, 咱們須要先安裝這個程序. 這一行使用了apt-get
命令安裝fortunes, 若是這些對你來講很難理解, 不用擔憂, 只要你輸入正確, 他們就會正常運行的.
一旦鏡像有了它所需的軟件, 就能夠在命令他在加載鏡像的時候運行軟件.
這一行是告訴fortune程序發送一個俏皮的引用給cowsay程序
在TextEdit菜單中選擇文件 > 保存或者按CMD+S保存Dockerfile
在這一點上,你在一個Dockerfile描述的全部軟件成分和行爲。您準備創建一個新的形象。
將你的光標從新定位到Docker Quickstart Terminal上
mkdir docker-whale
cd docker-whale
touch Dockerfile
open -e Dockerfile
輸入&保存
FROM docker/whalesay:latest RUN apt-get -y update && apt-get install -y fortunes CMD /usr/games/fortune -a | cowsay
在當前文件夾下輸入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
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 Quickstart Terminal窗口的提示。
輸入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
輸入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賬戶分享你的鏡像.