# DockerFile
# 是什么
是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
dockerFile中每条指令都会创建一个新的镜像层,并对镜像进行提交
- 构建三步骤
- 编写dockerfile
- docker build
- docker run
# DockerFile示例
下面是centos的dockerFile的代码:
FROM scratch # 真正的基础镜像,类似于java中的Object
MAINTAINER The CentOS Project <cloud-ops@centos.org> # 作者+邮箱
ADD c68-docker.tar.xz /
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="2016-06-02"
# 一个说明
# Default command
CMD ["/bin/bash"] #启动的时候的运行命令
# 保留字
- From:基础镜像,当前编写的镜像是基于哪个镜像的
- MAINTAINER:作者+作者的邮箱
- RUN:容器构建时需要运行的命令
- EXPOSE:暴露端口
- WORKDIR:默认登陆的工作目录
- ENV:在构建镜像过程中设置环境变量
- ADD:将宿主机目录下的文件拷贝进镜像,并自解压
- COPY:拷贝文件,COPY src dest或者COPY ["src","dest"]
- VOLUME:保存数据和持久化,建立容器卷
- CMD:指定一个容器启动时要运行的命令,dockerFIle中可以有多个cmd指令,但只有最后一个生效,CMD会被docker run之后的参数替换
- ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT和CMD一样,都是在指定容器启动程序和参数
- ONBUILD:当构建一个被继承的dockfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
BUILD | BOTH | RUN |
---|---|---|
FROM | WORKDIR | CMD |
MAINTAINER | USER | ENV |
COPY | EXPOSE | |
ADD | VOLUME | |
RUN | ENTRYPOINT | |
ONBUILD | ||
.dockerignore |