dockerfile是什么
一套构建docker镜像的脚本语言,就像每种开发语言都有自己的编写规范一样,dockerfile也是如此,通过编写dockerfile文件,然后通过build,即可按照dockerfile的要求达到构建一个目标期望的镜像的目的
举个例子来说,我们直接从阿里云或者dockerhub上下载下来的镜像,有时候并不能满足我们的要求,我们实际需要的镜像可能包含更多的组件,如果在镜像生成后操作会不会特别麻烦,现在有了dockerfile,我们在dockerfile中通过命令指定我们需要的所有文件,编写完毕dockerfile,通过build之后生成的docker镜像就包含了所有的组件,从而达到满足实际需求的目的
下面先说说dockerfile编写的几个常用术语,或者说是指令,dockerfile能够最终执行就是依靠解析这些指令来完成的,
下面我们来实际编写一个简单的dockerfile的demo来观察一下dockerfile的运行过程,我在/usr/mydocker目录下创建一个名叫Dockerfile2的文件,内容如下,demo的大概意思是,通过本地的centos镜像构建一个新的镜像,新的镜像运行起来后默认的工作位置是/usr/local下,并且会自动安装vim 和 rzsz这两个组件,暴露80端口,最后会打印一些内容
#docker file test
FROM centos
MAINTAINER zcy<543325130@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install lrzsz
EXPOSE 80
CMD echo $MYPATH
CMD echo "build success ---------->"
CMD /bin/bash
dockerfile编写完毕,我们在宿主机当前目录下执行build命令来执行dockerfile文件,注意-t 后面的mycentos2表示的是新的镜像的版本号,即TAG ,最后的 . 不要忘了
docker build -f /usr/mydocker/Dockerfile2 -t mycentos2 .
这行dockerfile可以看到下面的打印内容,dockerfile是按照我们编写的内容从上到下分步骤执行的,直到最终出现了一个镜像ID才算是执行完成,
然后我们运行一下我们刚刚构建完毕的mycentos2这个镜像,可以看到成功启动,并且默认进来的位置是 /usr/local ,这个位置正是我们在dockerfile中指定的workdir