Nsking和他的想法

Docker入门和踩坑:dockerfile的编写
2020-04-16

首先我们来看一个典型的dockerfile

  • FROM 行表示基于什么镜像进行构建,得益于docker镜像的分层特性,它的复用是很方便的;
  • WORKDIR 行表示会把接下来的构建步骤都在哪一个相应的具体目录下进行,其起到的作用类似于 Shell 里面的 cd;
  • COPY 行表示的是可以将宿主机上的文件拷贝到容器镜像内;
  • RUN 行表示在容器内执行相应的shell命令。
  • CMD 行表示镜像启动时要在容器内执行的shell命令。
  • EXPOSE行用来声明该镜像所使用的端口。
  • VOLUME行用来将nginx的log目录挂载为一个卷,方便持久化存储的同时也可以用于多个容器之间的数据共享。

需要注意的几点是:

1,docker镜像是一种分层( layer )的存储结构,每一行COPY命令和RUN命令都会为这个镜像加上一层,所以尽可能让这两个命令在dockerfile中少出现,如图中我将所有文件统一放在files目录下再拷贝至镜像内,只使用了一次COPY,且我用\ &&将多个shell命令写在了一行中,也是为了只使用一个RUN命令。

2,CMD是镜像启动时要在容器内执行的shell命令,不论在dockerfile中出现多少个CMD,只有最后一个会被运行,且其可被docker run命令中的命令行所覆盖

留个小脚印

  • *只有经过审核的评论才会显示出来噢 发表评论
  • 还没有人留下脚印噢,快来踩踩叭