Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤
编写Dockerfile文件
docker build
docker run
例:https://hub.docker.com/_/centos/
docker build
docker build 命令用于使用 Dockerfile 创建镜像。
语法:docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
—build-arg=[] :设置镜像创建时的变量;
—cpu-shares :设置 cpu 使用权重;
—cpu-period :限制 CPU CFS周期;
—cpu-quota :限制 CPU CFS配额;
—cpuset-cpus :指定使用的CPU id;
—cpuset-mems :指定使用的内存 id;
—disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
—force-rm :设置镜像过程中删除中间容器;
—isolation :使用容器隔离技术;
—label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
—memory-swap :设置Swap的最大值为内存+swap,”-1”表示不限swap;
—no-cache :创建镜像的过程不使用缓存;
—pull :尝试去更新镜像的新版本;
—quiet, -q :安静模式,成功后只输出镜像 ID;
—rm :设置镜像成功后删除中间容器;
—shm-size :设置/dev/shm的大小,默认值是64M;
—ulimit :Ulimit配置。
—tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
—network: 默认 default。在构建期间设置RUN指令的网络模式
保留字指令
FROM 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 容器构建时需要运行的命令
EXPOSE 当前容器对外暴露出的端口
WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY 类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定一个容器启动时要运行的命令
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
ENTRYPOINT 指定一个容器启动时要运行的命令
docker run 之后的参数会被当做参数传递给 ENTRYPOINT,之后形成新的命令组合
ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
案例
Base镜像(scratch),Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的,
所以在文件开头都有:FROM scratch
以下对基础centos镜像进一步编写
1.新建dockerfile文件编写:
FROM centos #继承本地基础centos镜像
MAINTAINER zzyy
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo “success———————ok”
CMD /bin/bash
2.构建新镜像
docker build -f dockerfile -t mycentos:1.3 .
3.运行新镜像并尝试ifconfig
docker run -it mycentos:1.3
ifconfig
