docker学习笔记

构建时的相对路径

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