Dockerfile

简介: Dockerfile

Dockerfile

Dockerfile就是用来构建docker镜像的构建文件,命令脚本。

构建自己的centos镜像

cb37dd3450c74b3c97488e28c7fdb13f.png

docker build -f mydockerfile -t mycentos:1.0 .#构建镜像


这里对dockerfile 某些命令进行解释(摘自菜鸟教程)


FROM        # 基础镜像,一切从这里开始构建

MAINTAINER    # 镜像是谁写的:姓名+邮箱

RUN            # 镜像构建的时候需要运行的命令

ADD            # 步骤:tomcat镜像,这个tomcat压缩包!添加内容

WORKDIR        # 镜像的工作目录

VOLUME        # 挂载的目录

EXPOSE        # 暴露端口配置

CMD            # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    # 指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD        # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。

COPY        # 类似ADD,将我们文件拷贝到镜像中

ENV            # 构建的时候设置环境变量!


FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN:用于执行后面跟着的命令行命令。

CMD

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

CMD 在docker run 时运行。

RUN 是在 docker build。

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


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


CMD ["<可执行文件或命令>","<param1>","<param2>",...]

ENV

设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

EXPOSE

仅仅只是声明端口。

作用:

  • 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
  • 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

WORKDIR

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。


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


ENTRYPOINT

类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。

优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。

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

格式:

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

相关文章
|
5月前
|
Java Linux 开发工具
|
5月前
|
Ubuntu Shell Docker
Dockerfile
Dockerfile 可以通过以下步骤进行: 1. 了解 Dockerfile 的基本概念:Dockerfile 是用于构建 Docker 镜像的文本文件,它包含了构建 Docker 镜像所需的指令。了解 Dockerfile 的基本概念有助于更好地理解 Dockerfile 的作用和用途。
62 2
|
10月前
|
缓存 Shell Go
dockerfile介绍与使用
dockerfile介绍与使用
85 1
|
缓存 Shell C语言
Dockerfile完全指南
Dockerfile完全指南
264 2
|
Linux 应用服务中间件 开发工具
dockerfile
dockerfile
101 0
|
Go 容器
一文了解 Dockerfile 鲜为人知的一面
Hello folks,今天给大家介绍一下如何在 Dockerfile 中进行 Go 代码编写及运用(备注:此处暂不关注所部署的容器大小及性能问题)。
85 0
|
缓存 Shell Go
DockerFile文件详解
DockerFile文件详解
197 0
|
应用服务中间件 Shell nginx
|
Ubuntu Shell 开发工具
DockerFile
DockerFile
83 0
|
运维 Shell Linux
Dockerfile 深入理解
Dockerfile 深入理解
220 0
Dockerfile 深入理解
下一篇
无影云桌面