docker学习笔记(3):Dockerfile详解

引言

Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。

Dockerfile介绍

通过下图可以看出使用 Dockerfile 定义镜像,运行镜像启动容器:
在这里插入图片描述

Docker 镜像是由 Dockerfile 构建而成,Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,当我们需要定制自己额外的需求时,只需在 Dockerfile 上添加或者修改指令,重新生成 image 即可,省去了敲命令的麻烦。最简单的形式是由FROM、ADD、VOLUME、CMD四个部分组成,我们可以写一个最简单的Dockerfile文件:

FROM ubuntu:14.04  
ADD run.sh /  
VOLUME /data  
CMD ["./run.sh"] 

FROM ubuntu:16.04:设置基础镜像,此时会使用基础镜像ubuntu:16.04的所有镜像层,为简单起见,图中将其作为一个整体展示
ADD run.sh /:将 Dockerfile 所在目录的文件run.sh加至镜像的根目录,此时新一层的镜像只有一项内容,即根目录下的run.sh
VOLUME /data:设定镜像的 VOLUME,此 VOLUME 在容器内部的路径为/data。需要注意的是,此时并未在新一层的镜像中添加任何文件,但更新了镜像的 json 文件,以便通过此镜像启动容器时获取这方面的信息。
CMD ["./run.sh"]:设置镜像的默认执行入口,此命令同样不会在新建镜像中添加任何文件,仅仅在上一层镜像 json 文件的基础上更新新建镜像的 json 文件。

然后之后还有别的命令,我们本篇主要构建的是将我们自己的Python代码能够在docker本地上运行成功,并保存成镜像,推送到dockerhub上。


dockerfile书写规范

dockerfile除了上面最基础但又是比较重要的语法构成外,还有一些其它的命令同样能帮助我们完善docker镜像,下面参考Docker(三):Dockerfile 命令详解 对上述命令进行一个整体的概括与整理:

命令 说明 详解
from 指定基础镜像 必须为第一条非注释指令,多个from可以创建多个镜像,但from前需提交上次镜像ID
run 执行特定命令 位置没有限制,层级构建docker的命令
copy 复制文件 copy指令将从构建上下文目录中的文件复制到镜像内的目标路径
add 高级复制命令 和copy有一样的功能,多了源路径可以是url的情况
env
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

submarineas

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

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

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

打赏作者

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

抵扣说明:

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

余额充值