Dockerfile 编写规范整理

什么是 Dockerfile?

相关文章:Docker 常用命令总结

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

说到底,Dockerfile 就是一个名为 Dockerfile 且没有后缀名的文本文件,在 Linux 中,使用 vim Dockerfile,即可创建一个 Dockerfile。

一个 Dockerfile 示例

通过一个示例,来学习如何编写 Dockerfile。

先通过 vim Dockerfile, 创建 Dockerfile,再写入如下内容:

# 这是基础镜像
FROM centos:7.6.1810

# 将元数据添加到镜像, LABEL 是键值对。
LABEL "author"="you170917"
LABEL "version"="1.0"
LABEL "email"="you170917@gmail.com"

# 将当前目录下的 jar 包添加进来,并重命名
ADD readinglist-0.0.1-SNAPSHOT.jar readinglist.jar

# 将当前目录下的 jdk 包添加进来,重命名,再配置环境变量
ADD jdk1.8.0_261 jdk8
ENV PATH jdk8/bin:$PATH

# 配置环境变量支持中文
ENV LANG="en_US.UTF-8"

# 暴露 8080 端口
EXPOSE 8080

# 运行时的命令
ENTRYPOINT ["java","-jar","readinglist.jar"]

除了上面使用到的指令,Dockerfile 还有如下指令:

RUN

用于执行后面跟着的命令行命令,有以下俩种格式:

shell 格式:

RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的 shell 命令。

exec 格式:

RUN ["可执行文件", "参数1", "参数2"]

COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

CMD

类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

  • CMD 在docker run 时运行。
  • RUN 是在 docker build。

作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

VOLUME

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

格式:

VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>

在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

WORKDIR

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。

docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

格式:

WORKDIR <工作目录路径>

通过 Dockerfile 部署运行 jar 包

主要分为三步:

1、编写 Dockerfile

2、构建镜像

3、运行容器

这里,就使用上面那个 Dockerfile 。

先构建镜像:

docker build -t readinglist:2.0 .
  • docker build 是构建镜像的初始命令

  • -t readinglist:2.0 :指定镜像的名字和版本号,可任意取

  • 最后的 . 表示 Dockerfile 在当前目录下

运行容器

docker run --name=read -p 8000:8080 --restart=always -d readinglist:2.0
  • docker run:是运行容器的初始命令

  • --name=read:表示容器的名字叫做 name

  • -p 8000:8080:表示将主机 8000 端口,映射到容器内的 8080 端口

  • --restart=always:表示让容器一直运行

  • -d:表示容器后台运行

  • readinglist:2.0 这是运行容器的基础镜像和版本号

参考资料

Dockerfile参考 - 官方文档

Dockerfile - 菜鸟教程

Dockerfile编写规范 - 博客园

Docker部署jar包运行 - CSDN

每天学习一点点,每天进步一点点。

原文地址:https://www.cnblogs.com/youcoding/p/13815512.html