Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
dockerfile可以通过镜像来生成新的容器然后根据文件的内容在容器中添加一些需求中的东西然后提交镜像然后在生成容器运行下一条命令。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
’#’ 为 Dockerfile 中的注释。
镜像:
第一条命令就是from 指定从哪个镜像来使用
格式: from 镜像名:标签 标签可以不写,那么会使用latest的最新的镜像
实例: from centos:v1
维护者信息:
格式: MAINTAINER 维护者信息
实例: maintainer [email protected]
操作指令:
RUN
就是在每一个阶段的容器中运行的命令
ADD && COPY
把本地的文件复制到容器中
add可以在复制的同时会解压
ENV
环境变量的配置
格式 env 名 值
EXPOSE
暴露一个端口, 这个端口可以在run命令的时候用-p来设置一个连接到宿主机的端口,比如一个tomcat容器 用-p 8081:8080 就是把宿主机的8080端口连接容器8080 通过宿主机ip的8081来访问容器的tomcat
VOLUME
这个命令可以在容器中创建一个文件 用于连接外部,可以同步宿主机的文件内容,文件夹随时同步,文件要重启之后才能同步。如果不在run的时候设置则会在宿主机的默认位置创建, 设置的话 -v 宿主机路径:volume路径
WORKDIR
工作目录,进入容器的工作目录,后面的所有命令都在这里运行,如果不这样设置的话而是用cd只有那一次的提交容器有效果
USER
类似与上面,设置一个用户。
启动命令
CMD
ENTRYPOINT
cmd是默认的,如果在run命令的时候不在后面加上执行的脚本即是这个,如果加上了会替换,但是entrypoint不会,如果有cmd在会作为他的参数,run命令后面运行的命令也是他的参数。
build
只要路径不需要文件名 文件名固定只能Dockerfile
后面可以加一些参数 比如 /bin/bash可以用bash进入ubuntu
-t 可以加容器的名字:tag