從基礎鏡像構建一個容器 執行一條指令,對容器作出修改 執行相似docker commit 的操做 再基於剛提交的鏡像運行一個新容器 執行Dockerfile中下一條指令,直至全部的指令執行完畢
form <image> form <image>:<tag> form指令必須是第一條非註釋的指令 maintainer maintainer <name> 指定鏡像的做者信息,包含鏡像的全部者和聯繫信息 //這個是否是要不要都行啊,要這個有鳥用啊
run <command> (shell模式) //默認的/bin/bash run ["executable","param1","param2"] (exec模式) run ["/bin/bash","-c","echo hello"]
expose <port> [<port>] //這個expose並不會再執行的時候自動打開相應的端口,這個只是告訴程序員,應該用這個端口來運行,擦
提供容器啓動時執行的默認命令 cmd ["executable","param1","param2"] (exec模式) cmd command param1 param2 (shell模式) cmd ["param1","param2"](做爲entrypoint指令的默認參數) cmd指令用於執行容器執行的默認行爲,若是docker run的時候使用了其餘指令,那麼cmd命令會被覆蓋
entrypoint ["executable","param1","param2"] (exec模式) entrypoint command param1 param2 (shell模式) entrypoint的命令不會被docker run的啓動命令覆蓋,可是能夠使用docker run --entrypoint進行覆蓋
volume["/data"] 向docker建立的容器添加捲,這個卷能夠跳過聯合文件系統,提供共享數據,或數據持久化的功能
再容器的內部默認工做目錄,cmd等命令會再這個路徑下執行命令,workdir一般會使用絕對路徑,若是使用了相對路徑,那麼工做路徑會一直傳遞下去程序員
env <key><value> env <key>=<value>
user daemon 用戶會以一個什麼身份取運行
onbuild[instruction] 當一個 鏡像被其餘鏡像做爲基礎鏡像時執行(要充分理解這句話) 會在構建過程當中插入指令