简单记录下如何构建docker image
Docker Build Usage
dcoker build
命令将构建用到的内容发送给docker daemon,依次执行Dockerfile中的命令(每执行一行指令将会提交a new layer),执行成功image构建完成- 构建docker image时,应该选择一个属于构建相关的目录(构建镜像所需内容),将会减少不必要的内容到docker daemon的传输从而加速构建
- 指定Dockerfile构建,
docker build -t 8lovelife/activemq:1.0 -f /home/dmz/temp/Dockerfile .
Dockerfile中相关指令
RUN
RUN
用于在当前镜像之上a new layer执行所需命令,执行后结果将被提交并可被后续指令使用
- SHELLFORM:
RUN <COMMAND>
,linux 中默认以/bin/sh -c
执行,windows默认为cmd /s /c
- EXECFORM:
RUN ["executable","param1","parma2"]
,这种形式并不会执行命令shell。如RUN ["echo","$DMZ"]
并不会输出解析后的变量DMZ,而RUN ["sh","-c","echo $DMZ"]
可以解析变量DMZ(最终镜像中的系统变量)- EXECFORM将以JSON Array形式解析,所以参数需要双引号且相关符号需要转译如反斜杠,如:
RUN ["C:\\windows\\system32"]
CMD
CMD
用于容器执行的默认行为(同样能够使容器以可执行的形式运行),非必须存在。若在Dockerfile出现多次,只有最后一次会有效
CMD ["executable","param1","param2"]
EXECFORMCMD ["params1","param2"]
, 作为ENTRYPOINT的默认参数CMD command param1 param2
SHELLFORM