41-Dockerfile-Dockerfile简介

简介: 41-Dockerfile-Dockerfile简介

前言

  • 本篇开始来学习下Dockerfile相关的用法

Dockerfile 简介

  • Dockerfile : 是用来构建 Docker 镜像的文本文件,是有一条条构建镜像所需要的指令和参数所组成的脚本文件,类似于 Linux 中的 Shell 脚本文件

基础知识

  1. 每条保留字指令都 必须为大写字母 且后面要跟随至少一个参数。
  2. 指令按照从上到下的顺序依次执行。
  3. # 表示注释。
  4. 每条指令都会创建一个新的镜像层并对镜像进行提交。

使用Dockerfile 构建镜像步骤

  1. 编写Dockerfile 文件。
  2. 使用 docker build 命令构建镜像。
  3. 使用 docker run 命令运行容器

Dockerfile 构建过程

  1. Docker 从基础镜像上运行一个容器。
  2. 执行一条指令并对容器进行修改。
  3. 执行类似 docker commit 的操作提交一个新的镜像层。
  4. Docker 再基于刚才提交的镜像运行一个新的容器。
  5. 依次类推,直到 Dockerfile 文件中的所有指令都执行完成

Dockerfile基本结构

  • Dockerfile 主要包含四部分内容:
  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动时指令

Dockerfile示例

自定义centos7镜像

要求:

  1. 默认登录路径为/usr
  2. 可以使用vim
  1. 编写dockerfile
# dockerfile
FROM centos:7
MAINTAINER dahai<dahai@qq.com>
RUN yum install-y vim
WORKDIR /usr
CMD /bin/bash
  1. 使用 docker build 命令构建镜像
docker build -f dockerfile -t my_centos:1.0 .
  1. 使用 docker run 命令运行容器
docker run -it my_centos:1.0

Dockerfile保留指令

指令 说明
FROM 指定基础镜像。
MAINTAINER 指定维护着信息,已过期,可以使用 LABEL xxx=yyy 来代替。
RUN 镜像构建过程中运行的命令。
CMD 指定启动容器时默认的命令。
ENTRYPOINT 指定镜像的默认入口以及运行命令 。
EXPOSE 声明镜像内服务监听的端口,一般而言,此指令只有指导意义,如:SpringBoot 项目的端口是 8080 ,而指定的 EXPOSE 是 8090 ,当然依据 8080 了。
ENV 指定环境变量,可以在 docker run 的时候使用 -e 改变。
ADD 复制指定的 src 路径下的内容到容器中的 dest 路径下,src 可以为 url 会自动下载,也可以为 tar 文件,会自动解压。
COPY 复制本地主机的 src 路径下的内容到镜像中的 dest 路径下,但是不会自动解压等等。
LABEL 指定生成镜像的元数据标签信息。
VOLUME 创建数据卷挂载点。
USER 指定运行容器时的用户名或 UID 。
WORKDIR 配置工作目录,为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。
ARG 指定镜像内使用的参数(如版本号信息等),可以在 docker build 的时候,使用 --build-args 改变。
OBBUILD 配置当创建的镜像作为其他镜像的基础镜像是,所指定的创建操作指令。
STOPSIGNAL 容器退出的信号值。
HEALTHCHECK 健康检查。
SHELL 指定使用 shell 时的默认 shell 类型。

总结

  • 从应用软件的角度来看,Dockerfile、Docker 镜像和 Docker 容器分别代表软件的三个不同的阶段:
  • Dockerfile 是软件的原材料。
  • Docker 镜像是软件的交付品。
  • Docker 容器则可以认为是软件镜像的运行态,即根据镜像运行的容器实例


相关文章
|
7月前
|
应用服务中间件 Shell nginx
Docker进阶:深入了解 Dockerfile
Dockerfile 是定义 Docker 镜像内容和构建步骤的文本文件,用于定制化镜像构建,包括基础镜像选择、软件安装和环境变量设置等。其优点在于支持容器化趋势,简化快速部署和交付,保证环境一致性,实现资源隔离和安全性,以及促进持续集成与持续部署。Dockerfile 指令如 FROM(指定基础镜像)、RUN(执行命令)、CMD(容器启动命令)和 EXPOSE(声明端口)。编写规则包括使用大写指令、创建 .dockerignore 文件排除无关文件等。
183 0
|
7月前
|
运维 Ubuntu Docker
【Docker】Dockerfile 构建文件
【1月更文挑战第26天】【Docker】Dockerfile 构建文件
|
应用服务中间件 nginx Docker
docker系列:关于dockerfile的简介
本文介绍Dockerflile及其用法。
100 1
|
Shell Linux 开发工具
一文简单了解并构建Dockerfile
一文简单了解并构建Dockerfile
204 0
|
运维 Java Shell
Dockerfile学习
Dockerfile学习笔记
|
Java 应用服务中间件 开发者
DockerFile 小总结 | 学习笔记
快速学习 DockerFile 小总结
DockerFile 小总结 | 学习笔记
|
Java Linux Shell
Dockerfile 是什么 | 学习笔记
快速学习 Dockerfile 是什么
Dockerfile 是什么 | 学习笔记
|
开发者 Docker 容器
DockerFile 小总结|学习笔记
快速学习 DockerFile 小总结
DockerFile 小总结|学习笔记
|
Java Linux Shell
Dockerfile 是什么|学习笔记
快速学习 Dockerfile 是什么
Dockerfile 是什么|学习笔记
|
存储 Ubuntu Java
Dockerfile 的最佳实践 | Dockerfile 你写的都对么?
镜像的优劣全靠 Dockerfile 编写的是否合理、合规。本文将讲述编写 Dockerfile 的一些最佳实践和技巧,让我们的镜像更小、更优。
973 0
Dockerfile 的最佳实践 | Dockerfile 你写的都对么?