首先通過一張圖來了解 docker 映象、容器和 dockerfile 三者之間的關係。
通過上圖可以看出使用 dockerfile 定義映象,執行映象啟動容器。
docker 映象是乙個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。
映象的定製實際上就是定製每一層所新增的配置、檔案。如果我們可以把每一層修改、安裝、構建、操作的命令都寫入乙個指令碼,用這個指令碼來構建、定製映象,那麼之前提及的無法重複的問題、映象構建透明性的問題、體積的問題就都會解決。這個指令碼就是 dockerfile。
dockerfile 是乙個文字檔案,其內包含了一條條的指令(instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。有了 dockerfile,當我們需要定製自己額外的需求時,只需在 dockerfile 上新增或者修改指令,重新生成 image 即可,省去了敲命令的麻煩。
dockerfile檔案格式如下:
## dockerfile檔案格式
# this dockerfile uses the ubuntu image
# version 2 - edition 1
# author: docker_user
# command format: instruction [arguments / command] ..
# 1、第一行必須指定 基礎映象資訊
from ubuntu
# 2、維護者資訊
maintainer docker_user [email protected]
# 3、映象操作指令
run echo "deb raring main universe" >> /etc/apt/sources.list
run apt-get update && apt-get install -y nginx
run echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# 4、容器啟動執行指令
cmd /usr/sbin/nginx
dockerfile 分為四部分:基礎映象資訊、維護者資訊、映象操作指令、容器啟動執行指令。一開始必須要指明所基於的映象名稱,接下來一般會說明維護者資訊;後面則是映象操作指令,例如 run 指令。每執行一條run 指令,映象新增新的一層,並提交;最後是 cmd 指令,來指明執行容器時的操作命令。 Dockerfile的簡單介紹
dockerfile是docker打包映象時使用的說明檔案,類似於構建rpm包的spec檔案。裡面由一些指令和配置構成。本文將一些dockerfile的編寫。其實我們可以把它看成就是spec的乙個擴充套件版。總的語法也和spec很像,以這樣的語句來表示。支援 注釋。1命令 引數 這是個很簡單的doc...
dockerfile指令介紹
dockerfile指令 cmd,entrypoint,add,copy,volume,workdir,user,onbuild,env等 1.cmd 用於指定乙個容器啟動時要執行的命令。類似於run指令,只是run指令是指定映象被構建時的命令,而cmd是指容器被啟動時要執行的命令 docker r...
Dockerfile 基礎介紹
這是本專欄的第三部分 映象篇,共 8 篇。前兩篇我為你介紹了 docker 映象生命週期的管理,以及映象的構建和分發方式。本篇,我來為你介紹 dockerfile 帶你理解 dockerfile 中的重點知識,方便你自己定義構建映象的行為。下面我們一起進入本篇的學習。在前面的內容中,我有寫過幾個 d...