开发者学堂课程【Docker 快速入门:Dockerfile 是什么】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/616/detail/9405
Dockerfile 是什么
内容介绍
一.思考回顾
二.Dockerfile 解析
上节课讲述在Docker 容器数据卷,容器内添加容器卷时,粗略的讲过Dockerfile。这节课正式学习 Dockerfile 解析,这是很重要的一章。
一.思考回顾
上节课用 Dockerfile 写容器卷时的主流步骤:
1.手动编写一个 dockerfile 文件,必须符合 file 的规范
2.编写文件后,直接 docker build 命令执行,获得一个自定义的镜像
3.run
开篇时讲过,最好必备 Linux 的基础,最好懂 maven 理念
maven build
Jar
java-jar ms。 。 。 。
maven 在 keeps 里面有 maven build ,编译成一个 jar ,”java-jar ms。 。 。 。”运行微服务
对比套路与流程,异曲同工之妙
流程:编写—构建—执行
二.Dockerfile 解析
1. Dockerfile 是什么
Dockerfile 是用来构建 Docker 镜像的构建文件,(有点像 Linux 脚本)是由一系列命令和参数组成的脚本。
之前看过的 Dockerfile,源码第一行都是由“FROM”开头,关键字标红,都有在最左边标出,标红且全大写。
2.构建三步骤:
编写 Dockerfile 文件— docker build — docker run
3.文件(以我们熟悉的 CentOS 为例)
在 CentOS 6.8 下,在此强调,“docker images”前面打开的美团的界面图,它是精简版的 CentOS ,它的大小只是 199 接近 200 兆,而我们当前使用的 CentOS 6.8 可是接近 4 个 G 左右,4.8 G。有两个 CentOS ,原因是什么?
原来一个是真正的 CentOS 6.8,另一个是跑在 Docker 容器下 200 兆的精简版的 CentOS ,这两个根本不是一回事。
如图,以我们熟悉的 CentOS 为例,它的大小只有 199.7MB。
我们来学习一下最简单的 dockerfile ,登录 hub.docker.com ,进入 centos ,查找 STARS,可以看到最新的版本是 CentOS 7,点击 CentOS 6.8 进入后有以下程序
FROM scratch
MAINTAINER The CentOS Project<cloud-ops@centos.org>
ADD c68-docker. tar. xz/
LABEL name="CentOS Base Image"\
vendor="Cent0S"\
license="GPLv2"\
build-date=“2016-06-02”
#Default command
CMD["/bin/bash"]
Scrath 字符,(类似于 Java 中的某一字符),是所有镜像文件的基础,来自于 CentOS,而 CentOS 来自于 scrath (基础镜像),本源,源镜像。
MAINTAINER 作者加邮箱,在 DockerFile 体系结构会具体讲解
ADD 后面跟压缩包
LABEL 标签说明
CMD 命令
如“docker run-it centos”
或者“docker run-it centos/bin/bash”
运行并读取某一镜像,根据调成建议,运行。
这两种写法都正确,因为在 CMD 中自带“/bin/bash”,第二种程序执行出来就比第一种程序多一行“/bin/bash”。