DockerFile
2019-06-25 10:17:37 0 举报
AI智能生成
docker
作者其他创作
大纲/内容
CMD
提供容器运行的默认命令
通过docker run启动时,如果指定了命令,会全额覆盖CMD指令的命令
三种模式
exec模式
shell模式
作为ENTRYPOINT指令的参数
ENTRYPOINT
提供容器运行的默认命令,只可指定一次,多个使用最后一个
docker run运行时,不会覆盖
两种模式
exec
如果使用exec模式docker run中的指令会作为ENTRYPOINT的参数
shell
可以使用CMD命令作为启动参数默认值,结合使用。如果传入参数会覆盖CMD
ADD
将文件或目录复制到使用Dockerfile构建的镜像中,支持两种参数,来源地址和目标地址
ADD <src> <dest>
ADD ["<src>","<dest>"]适用于文件中有空格的情况
文件或者目录的来源,可以是本地或者远程url。如果是本地地址,则是构建目录中的相对地址。不推荐使用远程地址,而是使用curl或者wget命令下载
目标路径需要指定镜像中的绝对路径
add包含的类似tar提供的解压缩功能,安装需要解压的文件,可以使用
COPY
将文件或目录复制到使用Dockerfile构建的镜像中,支持两种参数,来源地址和目标地址
ADD <src> <dest>
ADD ["<src>","<dest>"]适用于文件中有空格的情况
文件或者目录的来源,可以是本地或者远程url。如果是本地地址,则是构建目录中的相对地址。不推荐使用远程地址,而是使用curl或者wget命令下载
目标路径需要指定镜像中的绝对路径
单纯的copy,docker推荐使用此种
VOLUME
VOLUME["/data"]
用来像基于镜像创建的容器添加卷,一个卷可以存在于一个或多个容器的特定目录。这个目录可以绕过联合文件系统,并提供共享数据或数据持久化的功能。
WORDIR
WORKDIR /path/to/workdir
用来从容器内部设置工作目录,ENTRYPOINT或者CMD指定的命令都会在这个目录下执行。
可以使用这个指令在构建中为后续中的指令指定目录。
通常使用绝对路径,如果使用相对路径,会一直传递下去
EN
用来设置环境变量
ENV key=value
在构建或运行过程中都有效
USER
指定容器基于什么用户运行
不指定为root
USER user
USER uid
USER user:group
USER user:gid
USER uid:gid
USER uid:group
ONBUILD
ONBUILD [INSTRUCTION]
ONBUILD COPY xxx xxx
当一个镜像被用作其他镜像的基础镜像时,触发器会执行
当子镜像在构建时会插入触发器中的指令
DockerFile的格式包含了注释和指令
#comment
INSTRUCTION argument
以大写指令名开始,后面是指令参数
FROM
FROM <image>
FROM <image>:<tag>
必须是已经存在的镜像,它是基础镜像,必须是第一条非注释的指令
FROM unbuntu:latest
RUN
指定镜像构建过程中运行的指令
包含两种模式
shell 模式
是以/bin/sh -c command的模式来执行命令
RUN echo hello
exec 模式
可以使用其它终端执行指令
RUN ["/bin/bsh","-c","echo hello"]
MAINTAINER
MAINTAINER <name>
指定镜像的作者信息,包含镜像的所有者和联系信息
相当于commit命令中的-a
MAINTAINER zhangbowen "515445681@qq.com"
EXPOSE
EXPOSE <port>[<port>...]
指定运行该镜像的容器使用的端口
可以指定一个或多个端口
可以在一个Dockerfile中配置多个EXPOSE命令
EXPOSE并不会自动开启端口,只是告诉docker容器需要用到这个端口。仍需要通过docker run -p指令暴露端口
构建过程
从基础镜像运行一个容器
执行一条指令,对容器作出修改
执行类似docker commit指令,提交一个新的镜像层
再基于新的镜像层创建一个新的容器
执行Dockerfile中的下一条指令,重复这个过程
docker只会删除中间层镜像的容器,但不会删除中间层镜像,我们可以直接使用中间层镜像进行调试。查找错误
docker history <IMAGE> 查看镜像构建过程
构建缓存
默认使用缓存
不使用缓存
docker build --no-cache
Dockerfile中的ENV指令建立缓存刷新的环境变量,如时间戳变量
0 条评论
下一页