一、前言
对使用 Docker 搭建 Java Web 运行环境(利用 commit 理解镜像构成 来源:黄勇 )博文的归纳:
1、启动容器:
docker run
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v :
进入容器,配置环境,exit
2、查看所有容器 :
docker container ls -a 或者 docker ps -a
3、docker commit 的语法格式为:
docker commit [选项] [[:]]
--author "wwx" \
--message "修改了默认网页" \
docker commit 57c312bbaad1 huangyong/javaweb:0.1
4、启动容器:
docker run
慎用 docker commit,利用 commit镜像构成,意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像。如果使用 docker commit 制作镜像,以及后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,即使根本无法访问到。这会让镜像更加臃肿。
二、使用 Dockerfile 定制Java Web镜像
Ⅰ、Dockerfile回顾
①Dockerfile简介
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
②Dockerfile指令详解
#指定基础镜像
FROM
Dockerfile中必备指令,并且必须是第一条指令
FROM scratch 不以任何镜像为基础,接下来的指令将作为镜像第一层开始存在
#指定维护者信息
MAINTAINER格式:
MAINTAINER
#执行命令行命令
RUN定义每一层该如何构建(不是在写 Shell 脚本)每一个 RUN = 启动一个容器、执行命令、然后提交存储层文件变更
两行 RUN 命令的执行环境不同
格式:
1) shell 格式: RUN #类似命令行输入
2) exec 格式: RUN ["可执行文件", "参数1", "参数2"] #类似函数调用
行尾 \ 换行