需求
入门使用docker file构建镜像,先来一个简单的需求:
使用docker file制作简单的tomcat的镜像,使运行镜像显示自定义的首页。
过程
1.了解tomcat镜像
想要构建这样一个镜像,我们必须先连接tomcat原始镜像的目录结构:
使用命令docker run -it tomcat bash
以交互的终端打开一个shell
最终我们就是想要往/usr/local/tomcat/webapps/ROOT
这个目录里追加一段HTML。
2.构建镜像
切换到/usr/local
目录下,在目录下创建一个docker/tomcat
文件夹。
1)建立一个文本文件,并命名为 Dockerfile
:
FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT/
RUN rm -rf *
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html
FROM表示基于tomcat构建,类似于JAVA中的继承,然后切换工作目录为Root这个目录,删除此目录的所有文件,把Hello Docker 加到index.html中。
2)构建镜像
运行命令docker build -t mytomcat .
这时候一个自己的镜像就构建好了,查看镜像:
运行一下自己构建tomcat镜像:docker run -p --rm 8080:8080 mytomcat
结果如图:
说明:
关于docker build -t mytomcat .
命令中的这个.
,很多人会认为是指定docker file的文件位置,这种看法并不准确,其实这个.
是指的上下文路径。
我们都知道,docker 是一个CS架构的软件,通过docker version也可以看到:
Docker 的引擎提供了一组 REST API,而我们输入的这些命令,则是通过这组 API 与 Docker 引擎交互,从而完成各种功能。因此,虽然表面上我们好像是在本机执行各种 docker
功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。
当构建的时候,用户会指定构建镜像上下文的路径,docker build
命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后,展开就会获得构建镜像所需的一切文件。
这就是所谓的上下文路径,比如在客户端就是客户端的当前目录,在docker server就表示的是在docker server解压后的文件路径。