DockerFile 命令解析
- FROM 它的妈妈是谁(基础镜像)
- MAINTAINER 告诉别人你创造了它(维护者信息)
- RUN 你想让它干嘛(把命令前面加上RUN)
- ADD 往它肚子里面放点文件(COPY文件,会自动解压)
- WORKDIR 我是cd,今天刚化了妆(当前工作目录)
- VOLUME 给我一个存放行礼的地方(目录挂载)
- EXPOSE 我要打开的门是啥(端口)
- CMD 指定启动容器时默认执行的命令
- 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
- 目录不存在自动创建
- src
-
ADD 同 COPY使用
- tar包在本地会自动tar -x 然后复制到镜像
- url 会自动下载到本地然后copy到镜像
-
WORKDIR 工作目录
-
VOLUME 在images创建一个挂载点目录(分区/硬盘) 将宿主机的目录映射成一个分区或硬盘
- VOLUME /data/mysql
-
EXPOSE 指定对外暴露端口, 启动容器必须指定-P选项才会暴露端口, 否则只能内部通讯
- Syntax: EXPOSE
[/ ] …
- Syntax: EXPOSE
-
ENV 环境变量
- Syntax:
- ENV KEY VALUE VALUE (KEY=[v1,v2])
- ENV KEY=VALUE KEY=VALUE ..
- Syntax:
-
CMD 容器启动时的默认命令
-
RUN 构建镜像是使用命令
-
Syntax
- CMD COMMAND1 &&
COMMAND2 &&
COMMAND3 - CMD [’executable’, ‘param1’, ‘param1’]
- RUN [‘bin/bash’, ‘-c’, ‘ifconfig’, ’eth0’]
- CMD COMMAND1 &&