Docker系列之8 Dockerfile编写指南
2020-02-03 06:58
796 查看
什么是Dockerfile?
Dockerfile是由多行命令语句组成的构建镜像的文件,一般命令分成四部分:基础镜像信息,元数据信息,镜像操作指令和容器启动时执行的指令。并且支持使用#作为注释使用。
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构建镜像
保存文件名为Dockerfile,注意大小写
FROM centos:latest LABEL maintainers="yekangming" RUN echo "helloworld" CMD ["/bin/echo", "hellodocker"]
通过docker build去将Dockerfile构建成Docker镜像
docker build -t app:v1 .
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Docker配置指南系列(三):Dockerfile(一)
- Docker系列之9 Dockerfile编写优化
- Docker使用编写dockerfile启动node.js应用
- 【系列6】使用Dockerfile创建带LAMP的Centos Docker镜像
- dockerfile文档编写教程,如何用dockerfile文件构建docker镜像
- 第2章 DockerFile文件编写
- 【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像
- docker在已有的tomcat镜像上打新的镜像的Dockerfile编写说明
- Dockerfile:tomcat镜像编写
- Docker系列07—Dockerfile 详解
- [Linux] 编写Dockerfile文件自动构建镜像
- Docker学习三两事(三)Dockerfile 编写
- Docker配置指南系列(一):配置项管理
- Dockerfile编写 phpmyadmin
- 小娜老师的讲义-Docker基础知识-编写Dockerfile
- 脉冲云在线指定Dockerfile文件--如何编写Dockerfile文件
- 简单的Dockerfile编写
- 编写Dockerfile
- 在 Docker 上开发应用 - 编写 Dockerfile 的最佳实践
- 编写Dockerfile自定义镜像