Docker核心技术之Dockerfile

举报
Lansonli 发表于 2021/09/29 00:03:37 2021/09/29
【摘要】 一、Dockerfile简介 Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(定制镜像) 二、Dockerfile 示例与使用 Dockerfile参考示例 Dockerfile使用演示...

一、Dockerfile简介

Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(定制镜像)

二、Dockerfile 示例与使用

Dockerfile参考示例

Dockerfile使用演示 – docker build

Dockerfile使用命令 – docker build

作用:     根据dockerfile创建镜像

命令格式:     docker build [OPTIONS] PATH | URL | -

命令参数:     PATH        Dockerfile所在路径(文件夹路径),文件名必须是Dockerfile     

                       URL        Dockerfile所在URL地址          

                       OPTIONS:         -t, --tag list        为镜像设置名称和tag         

                                                 -f, --file string        指定Dockerfile的路径(这是可以使用其他名称命名Dockerfile)

三、Dockerfile 特征

Dockerfile 构建特征(一)

查看官方的Dockerfile:https://github.com/docker-library/docs

Dockerfile 构建特征(二)

Dockerfile必须具备一个FROM命令来进行构建

每一个Dockerfile命令都会构建一层镜像(本质上是每一层都会启动一个容器,执行完命令后,将容器进行提交后,产生新的镜像层)

通过查看下载下来的镜像,发现历史层信息的层ID是missing,其实是因为原本的层id只存在于构建镜像的宿主机上,一旦转移镜像后,历史层消息中将只保留最新一层的ID

四、Dockerfile 命令概述

Dockerfile 命令概述(一)

查看完整介绍

FROM: 指定基础镜像

RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build

CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改。

ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。

MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。

EXPOSE:设置对外暴露的端口。

ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效

ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失

ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件

COPY:将本地文件或目录拷贝到镜像的文件系统中。

VOLUME:添加数据卷

USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令

WORKDIR:设置工作目录

Dockerfile 命令概述(二)

ONBUILD:如果制作的镜像被另一个Dockerfile使用,将在那里被执行Docekrfile命令

STOPSIGNAL:设置容器退出时发出的关闭信号。

HEALTHCHECK:设置容器状态检查。

SHELL:更改执行shell命令的程序。Linux的默认shell是[“/bin/sh”, “-c”],Windows的是[“cmd”, “/S”, “/C”]。

五、总结

重点掌握: Docker 容器与镜像之间的关系(尤其commit命令的作用和效果)

                   Dockerfile 的书写规则和使用规则

 

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/89742568

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。