Dockerfile详解 发表于 2017-09-14 | 分类于 docker 官方文档 个人Dockerfile 编写最佳的Dockerfile的方法 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849# 第一行必须指定基于的基础镜像FROM ubuntu# 维护者信息MAINTAINER docker_user docker_user@email.com# 镜像的操作指令# RUN <command> 默认是在shell终端中执行# RUN ["/bin/bash","-c","echo hello"]将在指定的终端中运行,第一个为指定终端,后续为参数# 每一次RUN都将在当前镜像的基础上执行命令,并提交为新的镜像RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.listRUN apt-get update && apt-get install -y ningxRUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf# 容器启动时执行命令# CMD ["executable","param1","param2"] 指定终端中运行# CMD comand param1 param2 默认在/bin/sh中运行# CMD ["param1", "param2"] 提供给ENTRYPOINT的默认参数# 每个Dockerfile只有一条CMD命令,若存在多条,则以最后一条为准,若用户启动容器时指定了CMD,则覆盖Dockerfile中的CMDCMD /usr/sbin/nginx# EXPOSE <port> [<port>...]# ex.EXPOSE 22 80 8443# 指定容器暴露的端口号,若启动时用-P,则主机会自动分配一个端口转发到容器端口,使用-p则可以指定主机端口到容器端口的映射# 设置环境变量ENV PG_MAJOR 9.3ENV PG_VERSION 9.3.4ENV PATH /sur/local/postgres-$PG_MAJOR/bin:$PATH# 将指定src的目录/文件/URL/tar文件 复制 到容器中的destADD <src> <dest># 将主机中src的文件/目录 复制 到容器的dest中COPY <src> <dest># 配置容器启动后执行的命令,一个文件中只有一个,多个时,最后一个生效ENTRYPOINT ["executable","param1","param2"]ENTRYPOINT command param1 param2 (shell中执行)# 创建一个可以从本地主机或者其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据。VOLUME ["/data"]# 指定运行容器时用到的用户名或者UIDUSER daemonWORKDIR /path/tp/workdirONBUILD [INSTRUCTION] 1docker build -t tag /tmp/dockerfilepath