跳到主要内容

十九、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 可以是官方远程仓库中的,也可以位于本地仓库