iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
1
DevOps

現代化小白也要嘗試的容器手札系列 第 11

Day11. 利用 Dockerfile 簡單撰寫自己的映像

鬆獅容器小白11連拍

https://ithelp.ithome.com.tw/upload/images/20201005/2002548132Rex0l6HD.jpg

客製化自己的Dockerfile

建立映像檔有很多方法,使用者可以從 Docker Hub 取得已有映像檔並後來做修正更新,如上篇Docker Images深入探討中運用到Docker Commit的工具,但如果你想要擁有自己的純手工打造的自虐心願呢?
這願望是可以的!我們就在本機上自己建立一個Dockerfile吧!

先新建一個目錄和一個重要角色Dockerfile(名稱與大小寫是固定的,不符合就無法執行後面的Build動作)

mkdir gylabdk
cd gylabdk
touch Dockerfile

https://ithelp.ithome.com.tw/upload/images/20200919/20025481zhHQVwE0YI.png

Dockerfile 中每一條指令都會建立一層映像檔,如上篇提到他是屬於多層次堆疊上去的。
我們先來找最大眾的容器資源>>Docker Hub
從下圖可以知道這是來自各地各方慈善大大做好自己的映像檔免費公開讓大家取用的資源,你也可以透過左邊的篩選清單更精確找到您適合想要佈署的映像檔範本。
https://ithelp.ithome.com.tw/upload/images/20200919/20025481x4g8MzqwZN.png

Sinatra是一個簡單的Ruby DSL,用於快速創建網頁應用程序。其中它內建路由功能,使用範本提供靜態文件,幫助程序,錯誤處理等其他主題。

使用#來註釋
FROM ubuntu (FROM 指令告訴Docker要用哪個映像檔作基底)
MAINTAINER Docker Gary <mosbbs2@gmail.com> (維護建立者的註記訊息)
RUN apt-get -qq update (RUN指令會在建立中執行,如:安裝套件,Ubuntu是使用`apt-get`來安裝指定套件)
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra

https://ithelp.ithome.com.tw/upload/images/20200919/20025481xeJeGbRu6X.png

完成 Dockerfile 後可以使用docker build建立映像。

docker build -t="sinatra/gylabdk:v1" .
  • -t 標記添加tag,指定新映像檔用戶訊息。
  • “.” 是 Dockerfile當前所在目錄路徑,也可以是其他的Dockerfile路徑。
  • build指令執行首要就是上傳這個Dockerfile內容,因為所有操作都依據Dockerfile來進行。
  • Dockfile中每一條條堆疊建立一個新的容器,在容器中執行指令並提交變更修正。
  • 當所有指令都執行完畢之後,終將完成最後映像檔ID。所有步驟中所產生的容器都會被自動移除。
  • 補充:一個映像檔不能超過127層

https://ithelp.ithome.com.tw/upload/images/20200919/20025481A5tmpNd3WS.png

映像檔建立成功並透過Images清單確認無誤,如紅框所示
https://ithelp.ithome.com.tw/upload/images/20200919/20025481WROeaDBUrG.png

sudo docker run -t -i sinatra/gylabdk:v1 /bin/bash

進入到sinatra容器在裡面就如同虛擬機器一樣可以做大部份指令髓能支援的事了。
https://ithelp.ithome.com.tw/upload/images/20200919/200254816VoeZ1nxLW.png


上一篇
Day 10. Docker Images 深入探討
下一篇
Day12. Dockerfile 語法深入探討
系列文
現代化小白也要嘗試的容器手札30

尚未有邦友留言

立即登入留言