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 容器则可以认为是软件镜像的运行态,即根据镜像运行的容器实例


相关文章
|
1月前
|
应用服务中间件 Shell nginx
Docker进阶:深入了解 Dockerfile
Dockerfile 是定义 Docker 镜像内容和构建步骤的文本文件,用于定制化镜像构建,包括基础镜像选择、软件安装和环境变量设置等。其优点在于支持容器化趋势,简化快速部署和交付,保证环境一致性,实现资源隔离和安全性,以及促进持续集成与持续部署。Dockerfile 指令如 FROM(指定基础镜像)、RUN(执行命令)、CMD(容器启动命令)和 EXPOSE(声明端口)。编写规则包括使用大写指令、创建 .dockerignore 文件排除无关文件等。
93 0
|
3月前
|
运维 Ubuntu Docker
【Docker】Dockerfile 构建文件
【1月更文挑战第26天】【Docker】Dockerfile 构建文件
|
4月前
|
关系型数据库 MySQL Java
Docker Dockerfile 使用方法
Dockerfile 介绍 当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构建出最终的镜像,以及如何配置容器中的环境、文件和应用程序。 Dockerfile 的编写是构建容器的基础,它允许您定义容器的构建步骤、环境和配置。通过合理使用各种指令,您可以构建出一个满足应用程序需求的定制化镜像,从而实现应用的容器化部署。
58 3
|
7月前
|
应用服务中间件 nginx Docker
docker系列:关于dockerfile的简介
本文介绍Dockerflile及其用法。
71 1
|
运维 Java Shell
Dockerfile学习
Dockerfile学习笔记
|
Java 应用服务中间件 开发者
DockerFile 小总结 | 学习笔记
快速学习 DockerFile 小总结
69 0
DockerFile 小总结 | 学习笔记
|
Java Linux Shell
Dockerfile 是什么 | 学习笔记
快速学习 Dockerfile 是什么
76 0
Dockerfile 是什么 | 学习笔记
|
开发者 Docker 容器
DockerFile 小总结|学习笔记
快速学习 DockerFile 小总结
85 0
DockerFile 小总结|学习笔记
|
Java Linux Shell
Dockerfile 是什么|学习笔记
快速学习 Dockerfile 是什么
94 0
Dockerfile 是什么|学习笔记
|
Linux 应用服务中间件 开发工具
DockerFile 学习
DockerFile 学习
145 0
DockerFile 学习