构建时的相对路径
docker build .
并不是指定dockerfile
的路径,而是指定了构建时ADD和COPY的上下文路径,然后根据这个路径将文件加入&复制到镜像中
DOCKERFILE
FROM
- FROM是指定的基础镜像,构建时在基础镜像之上操作
- 必须是第一条指令
RUN
RUN是在构建镜时执行一次的shell脚本
- 一个RUN对应一个UNION FS层,因此,一般RUN多条指令用 && 连接,而不是多个RUN
COPY
- COPY的目的路径既可以是镜像的绝对路径,也可以是相对路径(相对于
WORKDIR
) - COPY会保留文件的各种元数据,包括权限,时间戳等
- 可以加上
--chown=<user>:<group>
修改目标权限COPY --chown=55:mygroup files* /mydir/
ADD
- 可以
ADD URL
,将链接文件下载到指定位置,然后设置权限600 - ADD一个压缩文件,则会自动解压到指定目录
CMD
- 容器开启时使用的命令
- 由于CMD一结束,docker容器也会一起停止运行,所以CMD执行服务的话,要让任务在前台运行
ENTRYPOINT
- docker run xxx 时,会把后面的参数传递给ENTRYPOINT
ENV
- 设置容器运行时环境变量,有两种格式
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
ARG
- 设置构建容器时的环境变量
- 可以使用
--build-arg <参数名>=<值>
在执行时加入
VOLUME
- 容器写操作执行位置,应避免在容器的存储层写数据
EXPOSE
- 声明端口,但运行时不会在宿主进行端口映射
WORKDIR
- 指定工作目录
USER
- 指定当前用户,用户必须提前创建
HEALTHCHECK
- 健康检查,告诉docker应该如何判断容器是否正常
HEALTHCHECK
支持下列选项:--interval=<间隔>
:两次健康检查的间隔,默认为 30 秒;--timeout=<时长>
:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;--retries=<次数>
:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次。
ONBUILD
ONBUILD
是一个特殊的指令,它后面跟的是其它指令,比如RUN
,COPY
等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
操作容器
启动容器
新建并启动
- 所需要的命令主要为 docker run
启动已终止容器
docker container start