Docker之8 Dockerfile

简介: Dockerfile

什么是Dockerfile?

Dockerfile是由多行命令语句组成的构建镜像的文件,一般命令分成四部分:基础镜像信息,元数据信息,镜像操作指令和容器启动时执行的指令。并且支持使用#作为注释使用。
8888

Dockerfile指令:

1、FROM
格式:FROM <image>或 FROM <image>:<tag>
基础镜像来源,必须在第一行指令中指定,不指定标记则默认为latest。
2、LABEL
格式:LABEL <name>=<value>
指定添加元数据到镜像,可指定多个标签信息。
3、RUN
格式:RUN <command>
每条指令将在当前镜像基础上执行,并提交为新的镜像。
4、CMD
格式:CMD <command>
指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条CMD指令,则只会执行最后一条CMD指令。如果在启动镜像时指定了启动指令,则镜像预设的CMD指令不执行。一般用于执行容器时提供默认值。
5、EXPOSE
格式:EXPOSE <port>
指定镜像启动后暴露的端口,在容器启动时需要通过 -p 做端口映射
6、ENV
格式:ENV <key> <value>
指定环境变量,使用在构建阶段中的所有后续指令的环境。
7、ADD
格式:ADD  <src> <dest>
该指令会在<src>(本地文件系统或远程网络位置) 进行复制新文件,并将它们添加到路径上图像的文件系统中<dest>。
8、COPY
格式:COPY <src> <dest>
复制本地主机的 <src> (为 Dockerfile 所在目录的相对路径) 到容器中的 <dest>。
9、ENTRYPOINT
格式:ENTRYPOINT <command>
配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。如果指定了多条ENTRYPOINT指令,则只会执行最后一条ENTRYPOINT指令。
10、VOLUME
格式:VOLUME  <FileSystemMountPoint>
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
11、USER
格式:USER <user>:<group> | USER <uid>:<gid>
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
12、WORKDIR
格式:WORKDIR <FileSystemPath>
为后续的 COPY、ADD、RUN、CMD、ENTRYPOINT 指令配置工作目录。(可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径, 则会基于之前命令指定的路径)
13、ARG
格式:ARG <varname>[=<value>]
该ARG指令定义了一个变量,用户可以docker build使用该--build-arg <varname>=<value> 标志在构建时将该变量传递给构建器。
14、ONBUILD
格式:ONBUILD [INSTRUCTION]
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令,就好像它已经FROM在下游指令之后立即插入一样 Dockerfile。
15、STOPSIGNAL
格式:STOPSIGNAL <signal>
设置将发送到容器的系统调用信号以退出。此信号可以是与内核的系统调用表中的位置匹配的有效无符号数,例如9,或SIGNAME格式的信号名,例如SIGKILL。
16、HEALTHCHECK
格式:HEALTHCHECK [OPTIONS] CMD command
测试容器以检查它是否仍在工作。即使服务器进程仍在运行,这也可以检测到陷入无限循环且无法处理新连接的Web服务器等情况。当容器指定了运行状况检查时,除了正常状态外,它还具有运行状况。这个状态最初是starting。每当健康检查通过时,它就会变成healthy(以前所处的状态)。经过一定数量的连续失败后,它就变成了unhealthy。
17、SHELL
格式:SHELL ["executable", "parameters"]
该SHELL指令允许覆盖用于shell命令形式的默认shell。Linux上的默认shell是["/bin/sh", "-c"],而在Windows上["cmd", "/S", "/C"]。该SHELL指令必须以JSON格式写入Dockerfile。

Dockerfile构建镜像

FROM centos:latest

LABEL maintainers="yekangming"

RUN echo "helloworld"

CMD ["/bin/echo", "hellodocker"]
docker build -t app:v1 .
目录
相关文章
|
3月前
|
Cloud Native NoSQL Redis
云原生 Docker Dockerfile 构建应用
【1月更文挑战第9天】云原生 Docker Dockerfile 构建应用
|
3月前
|
Cloud Native Docker 容器
云原生 Docker Dockerfile 构建配置
【1月更文挑战第9天】云原生 Docker Dockerfile 构建配置
|
4月前
|
Ubuntu 网络安全 数据安全/隐私保护
百度搜索:蓝易云【docker通过dockerfile安装sftp教程。】
现在,你已经通过 Dockerfile 成功安装了 SFTP,并且可以使用指定的用户名和公钥进行远程访问。请确保替换示例中的用户名、密码和公钥为自己的实际值。
76 1
|
4月前
|
Linux 开发工具 Docker
Docker dockerfile 案例:centos 支持 vim
Docker dockerfile 案例:centos 支持 vim
50 0
|
3月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
105 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
3月前
|
Java 持续交付 Docker
Docker 项目如何使用 Dockerfile 构建镜像?
Docker 简介:讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。
|
1月前
|
Java 网络安全 开发者
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
41 0
|
3月前
|
运维 Ubuntu Docker
【Docker】Dockerfile 构建文件
【1月更文挑战第26天】【Docker】Dockerfile 构建文件
|
3月前
|
应用服务中间件 nginx Docker
docker系列:dockerfile及其用法解析
docker系列:dockerfile及其用法解析
78 0
|
3月前
|
缓存 Ubuntu JavaScript
Docker自定义镜像-构建镜像-Dockerfile语法
Docker自定义镜像-构建镜像-Dockerfile语法
44 0