Docker_DockerFile
DockerFile
Dockerfile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構造的腳本。
構建三步驟:
1.編寫Dockerfile文件 2.docker build 3.docker runDockerFile構建過程解析
Dockerfile內容基礎知識
1 每條保留字段指令都必須為大寫字母且后面要跟隨至少一個參數 2 指令按照從上到下,順序執行 3 #表示注釋 4 每條指令都會創建一個新的鏡像層,并對鏡像進行提交Docker執行Dockerfile的大致流程
1 docker從基礎鏡像運行一個容器 2 執行一條指令并對容器作出修改 3 執行類似docker commit的操作提交一個新的鏡像層 4 docker再基于剛提交的鏡像運行一個新容器 5 執行dockerfile中的下一條指令直到所有指令都執行完成Dockerfile面向開發, Docker鏡像成為交付標準, Docker容器則涉及部署與運維。DockerFile體系結構(保留字指令)
1 FROM 基礎鏡像,當前新鏡像是基于哪個鏡像的 2 MAINTAINER 鏡像維護者的姓名和郵箱地址 3 RUN 容器構建時需要運行的命令 4 EXPOSE 當前容器對外暴露出的端口 5 WORKDIR 指定在創建容器后,終端默認登陸的進來工作目錄 (沒有指定的話 就是根目錄) 6 ENV 用來在構建鏡像過程中設置環境變量 7 ADD 宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包 8 COPY 類似ADD,拷貝文件和目錄到鏡像中。 將從構建上下文目錄中<源路徑>的文件/目錄復制到新的一層的鏡像內的<目標路徑>位置 9 VOLUME 容器數據卷,用于數據保存和持久化工作 10 CMD 指定一個容器啟動時要運行的命令 Dockerfile中可以有多個CMD命令,但只有最后一個生效,CMD會被docker run之后的參數替換 11 ENTRYPOINT 指定一個容器啟動時要運行的命令 ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數 12 ONBUILD 當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發DockerFile案例
自定義鏡像mycentos
如果直接拉取的是阿里云的Centos鏡像
初始centos鏡像的默認路徑是/,而且不支持vim、iifconfig等命令。接下來就通過編寫dockerfile文件創建一個新的鏡像,使之默認路徑及相關命令都發生改變。
編寫dockerfile
在Dockerfile的目錄下執行下列命令
運行一下鏡像
發現默認路徑和相關命令都發現了改變
列出鏡像的變更歷史
CMD-ENTRYPOINT命令
編寫一個Dockerfile文件
如果使用CMD的話只能是最后一個生效,那么假設要查看請求頁面的頭信息,加上參數i,那么命令就變成了
那么CMD -i便會覆蓋到掉上面的CMD命令,而我們希望的是加入-i參數,因此可以使用ENTRYPOINT命令
這時再執行只需在語句后加上-i參數即可
參數追加到原來的命令中,進一步去執行
之前的命令,就會變成以下的命令,而不是覆蓋
ENTRYPOINT ["curl","-s",-i "http://ip.cn"]ONBUILD命令
先創建一個父類的dockerfile文件
再構建成鏡像
再創建一個dockerfile文件,FPOM繼承的是myip_father這個鏡像
構建子鏡像并運行,發現父鏡像的ONBUILD被執行
自定義的tomcat9
先建立一個文件夾,放置以下文件
接下來就可以自己來編寫Dockerfile文件
下面就可以進行構建
運行一下
再次驗證一下即可
完結撒花!,Docker的使用基本了解,就先學習到這里,如果以后哪里有再需要進一步學習的,再來學習!!!
總結
以上是生活随笔為你收集整理的Docker_DockerFile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker_容器数据卷
- 下一篇: 流量分析_安恒八月月赛