建议:

  • 尽量使用官方镜像
  • 为了减小镜像体积,尽量依赖于现有镜像
  • 尽量少的使用指令构建过程中,每个指令都会构建一层,从而使镜像变得臃肿
  • 尝试使用docekr history来检查镜像层体积
  • 尝试使用多阶段Docker构建以减少镜像体积注: 可以分构建阶段、部署阶段

格式

  • 指令``参数``注释``解析器指令组成
  • 不区分大小写,但是指令通常是大写的,方便于参数进行区分
  • 使用#注释注:不可在换行符中间使用

构建命令

  1. # 进入项目目录
  2. cd /docker_project/
  3. # 编写镜像文件
  4. vi dockerfile
  5. # 构建镜像
  6. docker build \
  7. -t daived/demo:1.0 \
  8. .
  9. # -t 设置镜像名和版本

常用指令

FROM

设置基础镜像 结合ARG指令可动态管理版本

  1. ARG BASE_VERSION=latest
  2. FROM alpine:${BASE_VERSION}

RUN

构建时执行命令 会在镜像新层执行并保留结果 在下一次构建期间,指令缓存不会自动失效,需要使用--no-cache参数

  1. RUN /bin/bash -c "source $HOME/.bashrc"
  2. RUN /bin/bash -c \
  3. "source $HOME/.bashrc"
  4. RUN ["/bin/bash","-c","source $HOME/.bashrc"]

CMD

容器运行时执行 仅可执行一次,如有多个指令,则执行最后一个 如果在运行容器时指定参数则会覆盖该指令

  1. CMD echo "hello world"
  2. CMD ["/bin/echo","hello world"]

EXPOSE

计划发布的端口对外的一种端口文档类型,关于打算发布的端口 若未填写协议,则

  1. EXPOST 80/tcp
  2. EXPOST 80/udp

ADD

COPY

ENTRYPOINT

ENV

ARG

WORKDIR