【Dcoker从无到有】Dcokerfile

什么是dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。它其实就是将linux中·的命令写在了dockerfile下,通过dockerfile去执行设置好的命令。

Docker构建命令

在使用docker构建之前,先要对docker镜像的构建有一个大致的印象

Docker的构建是分层构建的,我们所执行的每一条指令,都会在docker新建一层,大致的理解图如下:

                                                                  镜像构建1

                                                                镜像构建2

图片来源:

https://itnext.io/3-simple-tric

1. FROM 指定镜像源

该命令主要用来指定你需要用哪个镜像作为基础镜像,官方仓库中有很多镜像,可以通过http://hub.docker.com进行搜索,建议尽量使用官方镜像作为基础镜像,因为官方镜像都是精简过的稳定版,也可以指定多个镜像源进行构建(最终还是构建为单个镜像),指定一个基础镜像别名后,进行二次构建

以上两种构建的写法为:

  1. 一次构建
FROM ubuntu
  1. 二次构建
FROM ubuntu as image1
······# 其他构建命令
FROM image1
······# 二次构建命令

2. RUN 执行命令

RU是用来执行linux命令的指令,需要注意的是,一写需要连续执行的命令,尽量使用"\"作为分割再使用&&将命令创建(防止过多层命令构建)

RUN有两种格式为:

shell 格式:

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

exec 格式:

RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

3. 尝试构建镜像

在了解了构建的两个命令后,开始尝试构建镜像

3.1. 构建Dockerfile文件

在一个空目录下,新建一个名为Dockerfile文件,并在文件添加以下内容

3.2. 通过Dockerfile构建一个镜像

$ docker build -t nginx:v3 .

注意:构建时要在Dockerfile文件下执行命令

.:命令最后的.代表的时文件路径,如果不在该文件下,则将.替换为文件路径

使用docker images查看是否正确

至此构建成功

dockerfile指令

Dockerfile 指令

说明

FROM

指定基础镜像,用于后续的指令构建。

MAINTAINER

指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)

LABEL

添加镜像的元数据,使用键值对的形式。

RUN

在构建过程中在镜像中执行命令。

CMD

指定容器创建时的默认命令。(可以被覆盖)

ENTRYPOINT

设置容器创建时的主要命令。(不可被覆盖)

EXPOSE

声明容器运行时监听的特定网络端口。

ENV

在容器内部设置环境变量。

ADD

将文件、目录或远程URL复制到镜像中。

COPY

将文件或目录复制到镜像中。

VOLUME

为容器创建挂载点或声明卷。

WORKDIR

设置后续指令的工作目录。

USER

指定后续指令的用户上下文。

ARG

定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置。

ONBUILD

当该镜像被用作另一个构建过程的基础时,添加触发器。

STOPSIGNAL

设置发送给容器以退出的系统调用信号。

HEALTHCHECK

定义周期性检查容器健康状态的命令。

SHELL

覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。

  • 31
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值