Docker 入门学习(5)
参考资源:Docker技术入门与实战
Dockerfile文件书写指令
Dockerfile一般包含四部分:基础镜像、维护者信息、镜像操作指令和容器启动时执行指令。#
开头为注释行。
# This dockerfile uses the ubuntu image
# VERSION 2-EDITION 1
# Author:wtingting
# Command format:Instruction [arguments command]...
# 1.第一行必须指定基于的基础镜像
FROM ubuntu
# 2.维护者信息
MAINTAINER wtingting wtingting@example.com
# 3.镜像操作指令
RUN echo "hello docker"
RUN apt-get update && apt-get install -y nginx
# 4.容器启动时执行指令
CMD usrsbin/nginx
FROM
格式为FROM <image>
或FROM <image>:<tag>
MAINTAINER
指令
格式为MAINTAINER <name>
RUN
格式为RUN <command>
或者RUN ["executable","param1","param2"]
前者在Shell
终端运行命令binsh -c
,后者使用exec
执行。命令较长时使用\
来换行。
- CMD
CMD ["executable","param1","param2"]
使用exec
执行。CMD command param1 param2
在binsh中执行,提供给需要交互的应用。CMD ["param1","param2"]
提供给ENTRYPOINT的默认参数。
每个Dockerfile只能有一个CMD
命令,如果有多条,只执行最后一条。
- EXPOSE
格式为EXPOSE <port> [<port>...]
。
- ENV
格式为ENV <key> <value>
指定环境变量。
例如:ENV PATH usr/local/postgres$PG_MAJOR/bin:$PATH
- ADD
格式为ADD <src> <dest>
复制指定的到容器中的。其中可以是Dockerfile的相对路径、URL或者tar文件(自动解压)。
- COPY
格式为COPY <src> <dest>
- ENTRYPOINT
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1 param2
每个dockerfile只能有一个ENTRYPOINT,有多个时,只有最后一个生效。
- VOLUME
格式为VOLUME ["/data"]
创建挂载点。从本地主机或其他容器挂载。
USER
格式为USER daemon
指定运行容器时候的用户名或者UID。
- WORKDIR
格式为WORKDIR /path/to/workdir
配置工作目录。
ONBUILD
格式为ONBUILD [INSTRUCTION]
配置当所创建的镜像作为其他新创建的基础镜像时执行。