Dockfile语法

2020-08-31

DockerFile 命令解析

  1. FROM 它的妈妈是谁(基础镜像)
  2. MAINTAINER 告诉别人你创造了它(维护者信息)
  3. RUN 你想让它干嘛(把命令前面加上RUN)
  4. ADD 往它肚子里面放点文件(COPY文件,会自动解压)
  5. WORKDIR 我是cd,今天刚化了妆(当前工作目录)
  6. VOLUME 给我一个存放行礼的地方(目录挂载)
  7. EXPOSE 我要打开的门是啥(端口)
  8. CMD 指定启动容器时默认执行的命令
  9. ENV 指定环境变量,在镜像生成过程中会被后续RUN指令使用,在镜像启动的容器中也会存在
  • 变量
    • ${Variable_Name}
    • ${Name:-tom}: 当变量Name不存在或为空时, 设置值为tom
    • ${Name:+tom}: 当变量Name存在或不为空时, 设置为tom

指令

  • 镜像 image_name:tag_name or image_name@hash_code

  • COPY 宿主机复制到目标镜像

    • src
      • 支持通配符
      • src如果是目录, 内部文件和子目录会被复制,src本身不会被复制, 等价与 src/*
      • 如果指定多个src, dest必须是目录,用/结尾
    • dest
      • 目录不存在自动创建
  • ADD 同 COPY使用

    • tar包在本地会自动tar -x 然后复制到镜像
    • url 会自动下载到本地然后copy到镜像
  • WORKDIR 工作目录

  • VOLUME 在images创建一个挂载点目录(分区/硬盘) 将宿主机的目录映射成一个分区或硬盘

    • VOLUME /data/mysql
  • EXPOSE 指定对外暴露端口, 启动容器必须指定-P选项才会暴露端口, 否则只能内部通讯

    • Syntax: EXPOSE [/] …
  • ENV 环境变量

    • Syntax:
      • ENV KEY VALUE VALUE (KEY=[v1,v2])
      • ENV KEY=VALUE KEY=VALUE ..
  • CMD 容器启动时的默认命令

  • RUN 构建镜像是使用命令

  • Syntax

    • CMD COMMAND1 &&
      COMMAND2 &&
      COMMAND3
    • CMD [’executable’, ‘param1’, ‘param1’]
      • RUN [‘bin/bash’, ‘-c’, ‘ifconfig’, ’eth0’]

docker: 基础使用

ESXI取消网卡直通