经过了前面几期的编写,那我们已经知道了容器由镜像创建,而镜像可以通过命令行创建。最常见的办法呢,就是从公共镜像库中拉取一个基础镜像,生成一个基础镜像后,一点点加其他应用。这种方法是可行的,但是又非常大的限制。因为在我们生产环境中,不可能只有一台服务器,基本上都是几十上百台服务器,我们想要全员Docker化的化,那么镜像难道考一个服务器内打包,然后分别传送到目标服务器?

要是解决不了这种场景,那还要Docker有什么用!Dockerfile一键解决所有问题,可以随心所欲的创建自己的镜像。那么Dockerfile是什么?

一、Dockerfile

Dockerfile由两部分构成,注释和命令+参数 ,具体的命令解释可以查看官方文档。 它从内容上来说就是一个包含用于组合映像的命令的文本文档 , Docker通过读取Dockerfile中的指令自动生成映像,超级easy ~
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile

  1. docker build -f /Dockerfile

二、 Dockerfile的基本结构

Dockerfile的内容基本上都是四个部分组成,基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 Docker以从上到下的顺序运行Dockerfile的指令 。需要注意的是,我们为了指定基本映像,第一条指令必须是FORM,否则执行失败。

三、Dockerfile实例

想了想,博主觉得也没有必要再去把Dockerfile的内容参数一个一个搂出来,然后再细细说这是啥,那是啥。网上成千上百的文档,太多了。直接抛出一个实例,实践最能出真知!

  1. # 获取基础镜像
  2. FROM 基础镜像
  3. # 作者信息
  4. MAINTAINER 作者
  5. # 指定了临时文件目录为/tmp
  6. VOLUME /tmp
  7. # 指定编码
  8. ENV LANG en_US.UTF-8
  9. ENV LANGUAGE en_US:en
  10. ENV LC_ALL en_US.UTF-8
  11. ARG LOCAL_IP_ADDR
  12. RUN echo "当前环境IP地址:$LOCAL_IP_ADDR"
  13. # 设置环境变量
  14. ENV JAVA_OPTS="\
  15. # run
  16. RUN XXXXXX
  17. # 开启服务端口
  18. EXPOSE 8080