Dockerfile基础知识
- 每条保留字指令必须大写且后面至少要跟一个参数
- 指令按照从上到下,依次执行
- #表示注释
- 每条指令都创建一个新的镜像层,并对镜像进行提交
执行Dockerfile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令,并对容器进行修改
- 执行类似于docker commit的操作提交一次新的镜像层
- docker再基于刚提交的新镜像运行一个新容器
- 执行Dockerfile下一条指令,直到结束为止
Dockerfile保留指令
- FROM 基础镜像,当前新镜像是基于哪个镜像的
- MAINTAINER 镜像维护者的姓名和邮箱地址
- RUN 容器构建时需要运行的命令
- EXPOSE 当前容器对外暴露出的端口
- WORKDIR 指定在创建容器后,终端默认登陆的进来工作空间,一个落脚点
- ENV 用来在构建镜像过程中设置环境变量
- ADD 将宿主机目录下的文件拷贝今镜像且该命令会自动解析URL和解压tar压缩包
- COPY 类似ADD ,拷贝文件和目录到镜像
- VOLUME 容器数据卷,用户数据保存和持久化工作
- CMD 指定一个容器启动时要运行的命令,可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换。
- ENTRYPOINT 同CMD,但不会被替换而是命令追加
- ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。
自定义镜像生成步骤
- 编写Dockerfile文件
- 构建: docker build -f /path/Dockerfile -t 新镜像名字:TAG
- 运行 docker run 镜像名:TAG
- 列出镜像的变更历史 docker history 镜像名 .