目录
Dockerfile是什么
dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,
Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。
(1)构建指令用于构建image,其指定的操作不会运行在image的容器中执行。
(2)设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
dockerfile的的工作逻辑
首先需要有一个制作镜像的目录,该目录下有个文件,名称必须为Dockerfile,Dockerfile有指定的格式,#号开头为注释,,指定默认用大写字母来表示,以区分指令和参数,docker build读取Dockerfile是按顺序依次Dockerfile里的配置,且第一条非注释指令必须是FROM 开头,表示基于哪个基础镜像来构建新镜像。可以根据已存在的任意镜像来制作新镜像。
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段:
- Dockerfile软件的原材料
- Docker镜像是软件的交付品
- Docker容器则可以认为是软件镜像的运行形态,即依照镜像运行的容器实例
Dockerfile、Docker镜像、Docker容器
- Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等;
- Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行 Docker镜像时会真正开始提供服务;
- Docker容器,容器是直接提供服务的。
Dockerfile 常用指令
-
FROM (构建指令)
指定 base 镜像,必须指定且需要在Dockerfile其他指令的前面。后续的指令都依赖于该指令指定的镜像。FROM指令指定的base镜像可以是官方远程仓库中的,也可以位于本地仓库。
该指令有两种格式:
FROM <image>
指定基础image为该image的最后修改的版本(latest)。
或者:
FROM <image>:<tag>
指定基础image为该image的一个tag版本。
-
MAINTAINER (构建指令)
格式:MAINTAINER <name>
设置镜像的作者,可以是任意字符串。用于将image的制作者相关的信息写入到image中。当我们对该image执行