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

猜你喜欢

转载自blog.csdn.net/IT_heima/article/details/128918993