Dockerfile基本结构及编写详解

1 Dockerfile

​ Dockerfile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的集合,只要理解它的逻辑和语法格式,就可以很容易的编写Dockerfile。简单点说,Dockerfile可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。

​ 参考文档:https://docs.docker.com/engine/reference/builder/

1.1 Dockerfile的基本结构

​ Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

​ docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用 -f 标志指向文件系统中任何位置的Dockerfile。

​ Dockerfile由一行行命令语句组成,并且支持以#开头的注释行,Dockerfile分为四部分:基础镜像信息、维护者信息、 镜像操作指令和容器启动时执行指令。

1.2 Dockerfile文件说明

​ Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以 # 字符开头则被视为注释。可以在Docker文件中使用 RUN , CMD , FROM , EXPOSE , ENV 等指令。

1.3 Dockerfile常见命令

​ Dockerfile的常用命令如下:

命令 说明
FROM 指定基础镜像,必须为第一个命令
MAINTAINER 维护者(作者)信息
ENV 设置环境变量
RUN 构建镜像时执行的命令
CMD 构建容器后调用,也就是在容器启动时才进行调用。
ENTRYPOINT 指定运行容器启动过程执行命令,覆盖CMD参数;ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
ADD 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
WORKDIR 工作目录,类似于cd命令
ARG 用于指定传递给构建运行时的变量
VOLUMN 用于指定持久化目录
EXPOSE 指定于外界交互的端口
USER 指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

1.4 build命令

​ docker build命令用于使用 Dockerfile 创建镜像,对应语法如下:

docker build [OPTIONS] PATH | URL | -

​ 常用参数有下面这些:

​ build命令参数特别多。这里只给大家介绍几个常用的参数,如果小伙伴们想了解更多内容,请参考docker官网手册。

​ 1,**–build-arg=[] 😗*设置镜像创建时的变量;

​ 2,**-f 😗*指定要使用的Dockerfile路径;

​ 3,**–rm 😗*设置镜像成功后删除中间容器;

​ 4,–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

​ 下面编写一个Dockerfile,指定系统时间为上海时区:

FROM mysql:5.7.31
# 作者信息 
MAINTAINER mysql from date UTC by Asia/Shanghai "dream21th@dream21th.com"
ENV TZ Asia/Shanghai

​ 进入到编写的Dockerfile所在目录,执行下面操作构建镜像:

[root@localhost mysql]# docker build -t dream21th/mysql:5.7.31 .

​ 构建镜像成功之后,查看镜像列表:

[root@localhost mysql]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dream21st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值