跳到主要内容

十九、Docker Dockerfile 创建镜像

在Docker commit 更新镜像 中,我们使用了一种最土的方法,也是最有效的方法创建了一个新的镜像

但是,大家有没有发现,这种方法也是有弱点的

1、 镜像文件太大;

比如 souyunku/py365flask102 镜像足足有 902m ,都快 1G 了

2、 不方便更新;

如果以后我们的 Python 升级到 3.7。那么我们就要重新来过了

3、 不方便分享和转移;

快 1G 的文件,分享和下载都很慢的说

那,有没有新的更好的方法呢?

有的?

有一种方法叫做自动构建,就是那个 docker search 里的那个 AUTOMATED 字段所表示的

那这种自动构架的方法是怎么个原理呢?

它们是通过一个叫做 Dockerfile 收集命令,然后通过逐条解释每条命令来创建镜像

Dockerfile 文件

Dockerfile 是一种可以被 Docker 程序解释的脚本

Dockerfile 由一条一条的指令组成,每条指令对应 Linux 下面的一条命令

Docker 程序将这些 Dockerfile 指令翻译真正的 Linux 命令

Dockerfile 基本语法

Dockerfile 文件有自己书写格式和支持的命令

1、 Dockerfile的指令是忽略大小写的,建议使用大写;
2、 使用 作为注释
3、 每一行只支持一条指令,每条指令可以携带多个参数;

Dockerfile 指令

Dockerfile 的指令根据作用可以分为两种: 构建指令设置指令

1、 构建指令用于构建image,其指定的操作不会在运行image的容器上执行;
2、 设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行;

FROM 指令

FROM 是一个构建指令,用于指定基础 image

FROM 指令必须指定且需要在 Dockerfile 其它指令的前面

后续的指令都依赖于该指令指定的 image

FROM 指令指定的基础 image 可以是官方远程仓库中的,也可以位于本地仓库