Docker核心技术之Dockerfile
一、Dockerfile簡(jiǎn)介
Dockerfile其實(shí)就是根據(jù)特定的語(yǔ)法格式撰寫(xiě)出來(lái)的一個(gè)普通的文本文件 利用docker build命令依次執(zhí)行在Dockerfile中定義的一系列命令,最終生成一個(gè)新的鏡像(定制鏡像)
二、Dockerfile 示例與使用
Dockerfile參考示例
Dockerfile使用演示 – docker build
Dockerfile使用命令 – docker build
作用: ?? ?根據(jù)dockerfile創(chuàng)建鏡像
命令格式: ?? ?docker build [OPTIONS] PATH | URL | -
命令參數(shù): ?? ?PATH?? ??? ?Dockerfile所在路徑(文件夾路徑),文件名必須是Dockerfile ?? ?
? ? ? ? ? ? ? ? ? ? ? ?URL?? ??? ?Dockerfile所在URL地址 ?? ? ?? ?
? ? ? ? ? ? ? ? ? ? ? ?OPTIONS: ?? ??? ?-t, --tag list?? ??? ?為鏡像設(shè)置名稱(chēng)和tag ?? ??? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-f, --file string?? ??? ?指定Dockerfile的路徑(這是可以使用其他名稱(chēng)命名Dockerfile)
三、Dockerfile 特征
Dockerfile 構(gòu)建特征(一)
查看官方的Dockerfile:https://github.com/docker-library/docs
Dockerfile 構(gòu)建特征(二)
Dockerfile必須具備一個(gè)FROM命令來(lái)進(jìn)行構(gòu)建
每一個(gè)Dockerfile命令都會(huì)構(gòu)建一層鏡像(本質(zhì)上是每一層都會(huì)啟動(dòng)一個(gè)容器,執(zhí)行完命令后,將容器進(jìn)行提交后,產(chǎn)生新的鏡像層)
通過(guò)查看下載下來(lái)的鏡像,發(fā)現(xiàn)歷史層信息的層ID是missing,其實(shí)是因?yàn)樵镜膶觟d只存在于構(gòu)建鏡像的宿主機(jī)上,一旦轉(zhuǎn)移鏡像后,歷史層消息中將只保留最新一層的ID
四、Dockerfile 命令概述
Dockerfile 命令概述(一)
查看完整介紹
FROM: 指定基礎(chǔ)鏡像
RUN: 構(gòu)建鏡像過(guò)程中需要執(zhí)行的命令。可以有多條。docker build
CMD:添加啟動(dòng)容器時(shí)需要執(zhí)行的命令。多條只有最后一條生效。可以在啟動(dòng)容器時(shí)被覆蓋和修改。
ENTRYPOINT:同CMD,但這個(gè)一定會(huì)被執(zhí)行,不會(huì)被覆蓋修改。
MLABELAINTAINER:表明鏡像的作者。將被遺棄,被LABEL代替。
EXPOSE:設(shè)置對(duì)外暴露的端口。
ENV:設(shè)置執(zhí)行命令時(shí)的環(huán)境變量,并且在構(gòu)建完成后,仍然生效
ARG:設(shè)置只在構(gòu)建過(guò)程中使用的環(huán)境變量,構(gòu)建完成后,將消失
ADD:將本地文件或目錄拷貝到鏡像的文件系統(tǒng)中。能解壓特定格式文件,能將URL作為要拷貝的文件
COPY:將本地文件或目錄拷貝到鏡像的文件系統(tǒng)中。
VOLUME:添加數(shù)據(jù)卷
USER:指定以哪個(gè)用戶的名義執(zhí)行RUN, CMD 和ENTRYPOINT等命令
WORKDIR:設(shè)置工作目錄
Dockerfile 命令概述(二)
ONBUILD:如果制作的鏡像被另一個(gè)Dockerfile使用,將在那里被執(zhí)行Docekrfile命令
STOPSIGNAL:設(shè)置容器退出時(shí)發(fā)出的關(guān)閉信號(hào)。
HEALTHCHECK:設(shè)置容器狀態(tài)檢查。
SHELL:更改執(zhí)行shell命令的程序。Linux的默認(rèn)shell是[“/bin/sh”, “-c”],Windows的是[“cmd”, “/S”, “/C”]。
五、總結(jié)
重點(diǎn)掌握: Docker 容器與鏡像之間的關(guān)系(尤其commit命令的作用和效果)
? ? ? ? ? ? ? ? ? ?Dockerfile 的書(shū)寫(xiě)規(guī)則和使用規(guī)則
?
總結(jié)
以上是生活随笔為你收集整理的Docker核心技术之Dockerfile的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Docker核心技术之仓库
- 下一篇: Docker核心技术之Docker Co