Dockerfile

构建镜像的方式:

1.docker commit

2.docker Dockerfile

Docker commit:

docker commit命令是创建新镜像最直观的方法,其过程包含三个步骤:

● 运行容器

● 修改容器

● 将容器保存为新的镜像。

如何用docker commit创建新镜像。Docker并不建议用户通过这种方式构建镜像。原因如下:

  1. 手工创建镜像的方式,容易出错,效率低且可重复性弱。
  2. 使用者并不知道镜像是如何创建出来的,里面是否有恶意程序。也就是说无法对镜像进行审计,存在安全隐患。
  3. Dockerfile(推荐方法)构建镜像,底层也是docker commit一层一层构建新镜像的

Dockerfile:

Dockerfile是一个文本文件,记录了镜像构建的所有步骤。

构建一个简单的镜像文件:

  1. 从这步开始就是镜像真正的构建过程。首先Docker将build context中的所有文件发送给Docker daemon。build context为镜像构建提供所需要的文件或目录。Dockerfile中的ADD、COPY等命令可以将build context中的文件添加到镜像。
  2. step1/4执行FROM,将Ubuntu作为base镜像。
  3. step4/4执行RUN,安装vim
  4. 安装成功后,将容器保存为镜像,其ID为3e9c8cb93c07

docker history会显示镜像的构建历史,也就是Dockerfile的执行过程。

构建镜像命令:docker build -t 新的镜像名 .

如果build context为当前目录。Docker默认会从build context中查找Dockerfile文件,我们也可以通过-f参数指定Dockerfile的位置。

镜像缓存

相同的Dockerfile 顺序一致的情况下会走缓存

把copy文件和 安装 vim 顺序颠倒,重新构建Dockerfile

Dockerfile中每一个指令都会创建一个镜像层,上层是依赖于下层的。无论什么时候,只要某一层发生变化,其上面所有层的缓存都会失效。

总结一下通过Dockerfile构建镜像的过程:

(1)从base镜像运行一个容器。

(2)执行一条指令,对容器做修改。

(3)执行类似docker commit的操作,生成一个新的镜像层。

(4)Docker再基于刚刚提交的镜像运行一个新容器。

(5)重复2~4步,直到Dockerfile中的所有指令执行完毕。

构建一个简单的springboot项目:

● FROM

指定base镜像。

● MAINTAINER

设置镜像的作者,可以是任意字符串。

● COPY

将文件从build context复制到镜像。

COPY支持两种形式: COPY src dest与COPY ["src", "dest"]。

注意:src只能指定build context中的文件或目录。

● ADD

与COPY类似,从build context复制文件到镜像。不同的是,如果src是归档文件(tar、zip、tgz、xz等),文件会被自动解压到dest。

● ENV

设置环境变量,环境变量可被后面的指令使用。例如:

ENV MY_VERSION 1.3 RUN apt-get install -y mypackage=$MY_VERSION

● EXPOSE

指定容器中的进程会监听某个端口,Docker可以将该端口暴露出来。我们会在容器网络部分详细讨论。

● VOLUME

将文件或目录声明为volume。我们会在容器存储部分详细讨论。

● WORKDIR

为后面的RUN、CMD、ENTRYPOINT、ADD或COPY指令设置镜像中的当前工作目录。

● RUN

在容器中运行指定的命令。

● CMD

容器启动时运行指定的命令。

Dockerfile中可以有多个CMD指令,但只有最后一个生效。CMD可以被docker run之后的参数替换。

● ENTRYPOINT

设置容器启动时运行的命令。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别说小李

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

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

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

打赏作者

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

抵扣说明:

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

余额充值