新建資料夾workdir
,在資料夾中新建dockerfile
檔案
此時workdir
即為構建上下文
,在構建映象時,docker會將構建上下文和上下文中的目錄和檔案 上傳到 docker deamon 中。
要包含到映象中的檔案要放到上下文
中,之後dockerfile中對檔案的複製拷貝是對上下文中的檔案。
dockerfile基本例項如下,之後執行docker build
命令即可完成映象構建。
# dockerfile version 1.0
# 基礎映象
from node
# 拷貝檔案到映象中
copy ./ /code/
# 作者資訊
label maintainer="***x@***.com"
# 工作目錄
workdir /code
#在容器中執行一條命令
run ["/bin/bash", "-c", "echo hello"]
# print help info, while not input cmd
cmd ["/bin/sh", "-c", "cat readme.md"]
docker build -t="test/test2:v2" .
基本語句
# 第一條指令指定乙個基本的映象源,從公共庫拉取乙個映象源。並且from必須是第一行。
from
from from :from @# 設定標籤,採用鍵值對的形式。
label
label ===# 執行類linux 命令。
runrun run ["executable", "param1", "param2"]
# 用來指定容器的監聽埠。
expose
expose [...]
# 因為埠還和宿主機相關,不建議直接在映象開端口而是在生成例項時使用命令列指定埠
# 設定環境變數的鍵值。
envenv env =# 設定當前工作路徑
workdir
workdir /path/to/workdir
# 複製檔案
# add、copy
copy add # add在和copy相同的基礎上,增加:
# 1、add 允許 是乙個 url。
# 2、add 的是乙個壓縮格式文件將會解壓縮複製。
# 所以使用 copy除非你確信你需要 add。
# cmd 與 entrypoint
cmd ["executable","param1","param2"] #(執行乙個可執行的檔案並提供引數)
cmd command param1 param2 #(以」/bin/sh -c」的方法執行的命令)
entrypoint ["executable", "param1", "param2"]
entrypoint command param1 param2 #(以」/bin/sh -c」的方法執行的命令)
## 使用陣列引數的時候,docker會嚴格依照陣列執行,而直接傳參docker會呼叫/bin/sh -c,建議使用 ["/bin/sh", "-c", "cat readme.md"] 的方式,避免意外。
# cmd 與 entrypoint的區別:
# 1、dockerfile應至少指定乙個cmd命令或entrypoint。
# 2、乙個dockerfile只能有乙個cmd/entrypoint指令,如果有超過乙個cmd將只啟動並有效最後乙個。
# 3、cmd在執行時會被command覆蓋, entrypoint不會被執行時的command覆蓋。 故可以使用 cmd來設定預設啟動命令。
# 4、如果在dockerfile中同時寫了entrypoint和cmd則,docker在build過程中會將cmd中指定的內容作為entrypoint的引數。
# 5、需要初始化執行多個命令,彼此之間可以使用 && 隔開
## 注意
# 開始時run apt-get update 最後要清除apt 的快取並移除 /var/lib/apt/lists 檔案下的內容,使得映象檔案更精簡。
使用Dockerfile構建nginx映象
dockerfile的指令 from 指定基礎映象 from是必備的指令,並且必須為第一條指令 run 用來執行命令列命令。其基本格式 shell格式 run 命令 輸入在bash環境中的命令即可,乙個dockerfile允許使用run不得超過127層,所以,使用一次run,使用 換行,使用 執行下...
Dockerfile構建映象,映象入倉庫,映象啟動
dockerfile是由一系列命令和引數構成的指令碼,這些命令應用於基礎映象並最終建立乙個新的映象。它們簡化了從頭到尾的流程並極大的簡化了部署工作。dockerfile從from命令開始,緊接著跟隨者各種方法,命令和引數。其產出為乙個新的可以用於建立容器的映象。dockerfile示例 form u...
使用Dockerfile構建容器
通過dockerfile構建docker容器,可以只依賴基礎映象,此文以ubuntu作為基礎映象。touch dockerfile from ubuntu 14.04 maintainer tony env refreshed at 2017 05 08run apt get update run ...