Docker之Dockerfile初了解

一、是什么

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本

构建由三个步骤

    1、手动编写一个Dockerfile文件,必须符合Dockerfile规范

    2、编写完之后,直接docker build,获得一个自定义的镜像

    3、docker run

# 以官网的centos 6.8为例,简单了解一下Dockerfile文件

# scratch:所有镜像文件的祖先类,相当于Java中的Object
FROM scratch
# MAINTAINER:作者+邮箱
MAINTAINER The CentOS Project <[email protected]>
# 增加
ADD c68-docker.tar.xz /
# LABEL:标签相当于说明
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# Default command
CMD ["/bin/bash"]

二、Dockerfile构建过程解析

    基础

# 1、每条保留字指令字指令都必须大写字母且后面要跟随至少一个参数
# 比如 上面的 FROM scratch 和 MAINTAINER The CentOS Project <[email protected]> 等,FROM 和 MAINTAINER 指令字后面都必须跟随至少一个参数,不然会报错
# 2、指令按照从上到下,顺序执行
# 3、#表示注释
# 4、每条指令都会创建一个新的镜像层,并对镜像进行提交

    Docker执行Dockerfile的大致流程

# 1、docker从基础镜像运行一个容器
# 2、执行一条指令并对容器做出修改
# 3、执行类似docker commit的操作提交一个新的镜像层
# 4、docker再基于刚提交的镜像运行一个新容器
# 5、执行dockerfile中的下一条指令直到所有指令都执行完成

    从软件的角度看,Dockerfile、Docker镜像和Docker容器代表软件三个状态

Dockerfile是软件的代码

Docker镜像是经过测试的软件产品

Docker容器是软件运行时的状态

Dockerfile相当于开发,Docker镜像相当于出货标准,Docker容器相当于部署和运维。

# 1、Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者文件、环境、变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等
# 2、Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个docker镜像,运行镜像,才会提供服务
# 3、Docker容器,容器是直接提供服务的。

 

发布了81 篇原创文章 · 获赞 15 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章