1、通过容器构建
$ docker commit
参数说明:
-a --author=""指定作者-m --message=""构建说明-p --pause=true
2、通过Dockerfile构建
A、命令
$ docker build [OPTIONS] PATH | URL | -
参数说明:
--force-rm=false--no-cache=false--pull=false-q --quiet=false--rm=true-t --tag="指定构建镜像Dockerfile文件的路径"
B、Dockerfile指令格式
#First DockerfileFROM ubuntu:14.04MAINTAINER dormancypress "dormancypress@outlook.com"RUN apt-get updateRUN apt-get install -y nginxEXPOSE 80
C、Dockerfile参数介绍
| 参数 | |||
|---|---|---|---|
**FROM <image>****FROM <image>:<tag>** |
构建镜像依赖的基础镜像 | 该镜像必须是基础镜像 | |
**MAINTAINER** |
表示镜像的所有者以及作者 | ||
**RUN <command>****RUN ["executable","param1","param2"]** |
指定当前镜像运行的命令 | shell**模式 /bin/sh -c command exec**模式 **RUN ["/bin/bash","-c","echo hello"]** |
|
**EXPOSE <port> [<port>…]** |
指定运行该镜像容器使用的端口 | 指定一个或多个端口 | |
**CMD command param1 param2****CMD ["executable","param1","param2"]****CMD ["param1","param2"]** |
指定容器运行时的运行命令 等级**:**RUN>CMD |
shell**模式 exec**模式 作为**ENTRYPOINT**指令的默认参数 |
|
**ENTERYPOINT ["executable","param1","param2"]****ENTERYPOINT command param1 param2** |
指定容器运行时的运行命令 不会被覆盖,除非使用 **docker run --entrypoint**命令特殊指定 |
**exec**模式shell**模式** |
|
**ADD <src>…<dest>****ADD ["<src>"…"<dest>"]** |
设置镜像的目录文件 ADD**包含类似tar的解压功能** |
目标文件的来源地址**(本地地址,构建目录的相对地址 | 远程地址,不建议使用)和目标地址(镜像路径的绝对路径) 适用于文件路径中有空格的情况** |
**COPY ["<src>"…"<dest>"]****COPY <src>…<dest>** |
设置镜像的目录文件 单纯复制文件**,Docker推荐使用**COPY |
适用于文件路径中有空格的情况 目标文件的来源地址**(本地地址,构建目录的相对地址 |
远程地址,不建议使用)和目标地址(镜像路径的绝对路径)** |
**VOLUME ["/data"]** |
|||
**WORKDIR /path/to/workdir** |
镜像构建及运行时的环境设置 镜像创建容器时设置工作目录 通常使用绝对路径 |
||
**ENV <key> <value>****ENV <key>=<value>**… |
设置环境变量 | ||
**USER daemon** |
设置基于那种用户的形式运行 | USER nginx **以nginx的身份形式运行** | |
**ONBUILD [INSTRUCTION]** |
镜像触发器 当一个镜像被其他镜像作为基础镜像时执行 该命令在构建过程插入 |
||
**$ docker build --no-cache** |
构建过程不使用缓存 | ||
**$ docker history <image>** |
查看构建历史 |
