Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  • 对于开发人员:可以为开发团队提供一个完全一致的开发环境
  • 对于测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了
  • 对于运维人员:在部署时,可以实现应用的无缝移植

dockerfile举例

FROM centos:7
MAINTAINER whyat
RUN yum install -y vim
...
CMD ["/bin/bash"]

dockerHUB中的TOMCAT9.0.5 dockerfile

制作CENTOS镜像

vim在默认的centos7镜像中无法使用

image-20210729153011142

我们可以制作带vim的centos镜像

步骤:

  1. 定义父类镜像:FROM centos:7
  2. 定义作者信息:MAINTAINER whyat <whyat@foxmail.com>
  3. 执行安装 vim 命令:RUN yum install -y vim
  4. 定义默认的工作目录:WORKDIR /usr
  5. 定义容器启动执行的命令:CMD /bin/bash
  6. 通过 dockerfile 构建镜像:docker build -f dockerfile 文件路径 -t 镜像名称:版本
cd ~/docker/dockerfile

vim centos7withVim -t vim_centos7

# .代表本次执行的上下文路径
docker build -f ./centos7withVim -t vim_centos7:v1 .

构建的时候总共会有5步,因为有5行

image-20210729154723352

image-20210729155051017

:information_source:上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。

如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。

注意:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。