dockerfile是用來構建docker映象的構建檔案,是由一系列命令和引數構成的指令碼。
docker從基礎映象執行乙個容器
執行一條指令並對容器做出修改
執行類似docker commit的操作提交乙個新的映象
docker再基於剛提交的映象執行乙個新容器
執行dockerfile中的下一條指令直到所有指令都執行完成
dockerfile面向開發,docker映象成為交付標準,docker容器涉及部署與運維。三者合力充當docker體系的基石。
from:基礎映象,當前新的映象是基與哪個映象
maintainer:映象維護者的姓名和郵箱位址
run:容器構建時需要執行的命令
expose:當前容器對外暴露出的埠
workdir:指定在建立容器後,終端預設登陸的進來工作目錄,乙個落腳點
env:用來構建映象過程中設定環境變數
add:將宿主機目錄下的檔案拷貝進映象,且會自動處理url和解壓tar壓縮包
copy:拷貝檔案和目錄到映象中(copy src dest || copy ["src","dest"])
volume:容器資料卷,用於資料儲存和持久化工作。
cmd:指定乙個容器啟動要執行的命令,dockerfile中可以有多個cmd指令,但是 只有最後乙個生效,cmd會被docker run之後的引數替換。
解釋:執行命令 docker run -it -p 8080:8080 tomcat ls -l 後,ls -l 會替換tomcat中的dockerfile最後的cmd ["catalina.sh" "run"],變成cmd ls -l,這樣tomcat就會啟動失敗。如下圖所示:
entrypoint:指定乙個容器啟動要執行的命令,docker run之後的引數會被當做引數傳遞給entrypoint,之後形成新的命令組合
onbuild:當構建乙個被繼承的dockerfile時執行命令,父映象在被子繼承後父映象的onbuild被觸發
label:語法:label ===...
label 指令將元資料新增到映象。label 是鍵值對。要在 label 值中包含空格,請使用引號和反斜槓,就像在命令列解析中一樣。
docker hub中99%的映象都是通過在base映象中安裝和配置需要的軟體構建出來的。
from scratch
add centos-8-x86_64.tar.xz /
label org.label-schema.schema-version="1.0" org.label-schema.name="centos base image" org.label-schema.vendor="centos" org.label-schema.license="gplv2" org.label-schema.build-date="20200809"
cmd ["/bin/bash"]
from centos
maintainer wjenv mypath /opt
workdir $mypath
run yum -y install vim
run yum -y install net-tools
expose 10000
cmd /bin/bash
構建命令:
docker build -t 映象名:tag .
執行剛才自定義的dockerfile:
檢視剛才建立的映象的建立歷史:
Docker Dockerfile 基本結構詳解
dockerfike快速建立自定義的docker映象 一 目錄 1.docker典型結構 2.指令介紹 3.建立docker映象 二 結構 dockerfile分為四部分組成 基礎映象信 維護者資訊 映象操作指令和容器啟動時執行指令。例如 第一行必須指令基於的基礎映象 from ubutu 維護者資...
docker Dockerfile映象生成
dockerfile就是用來構建映象的檔案,有一系列命令和引數組成,docker會根據裡面的內容進行映象的build 1.手動新建乙個dockerfile檔案,必須符合file規範 2.然後新增自己的內容 3.有了這個檔案之後,就可以docker build映象,然後docker run容器 會生成...
Docker Dockerfile保留關鍵字
from基礎映象,當前新映象是基於哪個映象的。maintainer映象維護者的姓名和郵箱位址 run容器構建時需要執行的命令 expose當前容器對外暴露出的埠號 workdir指定在建立容器後,終端預設登入的進來的工作目錄,落腳點,預設是根目錄 env用來在構建映象過程中設定環境變數 add將宿主...