Dockerfile总结总结
是什么?是什么?
Dockerfile是一个包含所有可以用来组合镜像的命令的文本文档。可以通过dcoker build命令从Dockerfile构建镜像。
docker build -f /path/to/a/Dockerfile .
-f 指定Dockerfile的路径
指令指令
# Comment # 使用#标识注释
FROM:指定基础镜像:指定基础镜像
FROM必须为第一条指令。
FROM [:] [AS ] : 设置基础镜像
不指定标签时,默认使用latest版本
MAINTAINER:维护者信息:维护者信息
Syntax: MAINTAINER
RUN:执行命令:执行命令
用于指定 docker build 过程中运行的程序,其可以是任何命令
RUN命令支持两种格式:shell格式和exec格式。
每条RUN指令将当前的镜像基础上的图层上执行指令,并提交为新的镜像,命令较长的时候可以使用\来换行。建议不要使用建议不要使用
太多的太多的RUN操作,考虑封装成操作,考虑封装成shell脚本脚本,或者用一条语句组装起来。所以正确写法应该是:
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps
shell 格式格式
Syntax: RUN
示例:
RUN echo '
Hello, Docker!
' > /usr/share/nginx/html/index.html
shell格式是以 /bin/sh -c 来运行它(推荐推荐)
这意味着此进程在容器中的 PID 不为 1,不能接收 Unix 信号(比如kill信号),因此,当使用 docker stop 命令停止容器时,此
进程接收不到 SIGTERM 信号;
exec 格式格式
Syntax: RUN ["<executable", "", ""]
其中 为要运行的命令
COPY:复制文本:复制文本
复制本机文件到容器目录下
COPY ...
COPY ["",... ""]