build

用法:docker build [OPTIONS] PATH | URL | -

功能:使用指定路径中的Dockerfile生成构建一个新的image

选项:常用选项参数如下,更多选项可以查看docker help build

表 1 参数说明

参数

参数含义

—force-rm=false

即使没有构建成功也删除构建过程中生成的容器

—no-cache=false

构建image的过程中不使用缓存

-q, —quiet=false

禁止构建过程中产生的冗余信息

—rm=true

构建成功后删除过程中生成的容器

-t, —tag=””

指定构建生成的image的tag名

—build-arg=[]

设置构建参数

—label=[]

镜像相关参数设置,各参数意义与create类似

—isolation

指定容器的隔离方法

—pull

构建时总是尝试获取最新版本镜像

Dockerfile介绍:

Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器,所有的 Dockerfile 命令格式都是:INSTRUCTION arguments

FROM命令

格式:FROM 或 FROM :

功能:该命令指定基本镜像,是所有Dockerfile文件的第一个命令,如果没有指定基本镜像的tag,使用默认tag名latest。

RUN命令

格式:RUN (the command is run in a shell - `/bin/sh -c`) 或者

RUN [“executable”, “param1”, “param2” … ] (exec form)

功能:RUN命令会在上面FROM指定的镜像里执行指定的任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。RUN命令等价于:

docker run image command

docker commit container_id

注释

使用#注释

MAINTAINER命令

格式:MAINTAINER

功能:命令用来指定维护者的姓名和联系方式

ENTRYPOINT命令

格式:ENTRYPOINT cmd param1 param2 … 或者ENTRYPOINT [“cmd”, “param1”, “param2”…]

功能:设置在容器启动时执行命令

USER命令

格式:USER name

功能:指定 memcached 的运行用户

EXPOSE命令

格式:EXPOSE […]

功能:开放镜像的一个或多个端口

ENV命令

格式:ENV

功能:设置环境变量,设置了后,后续的RUN命令都可以使用

ADD命令

格式:ADD

功能:从src复制文件到container的dest路径, 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url, 是container中的绝对路径

VOLUME命令

格式:VOLUME [““]

功能:创建一个挂载点用于共享目录

WORKDIR命令

格式:workdir

功能:配置RUN, CMD, ENTRYPOINT 命令设置当前工作路径可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令

CMD命令

格式:CMD [“executable”,”param1”,”param2”] (like an exec, preferred form)

CMD [“param1”,”param2”] (as default parameters to ENTRYPOINT)

CMD command param1 param2 (as a shell)

功能:一个Dockerfile里只能有一个CMD,如果有多个,只有最后一个生效

ONBUILD命令

格式:ONBUILD [其它指令]

功能:后面跟其它指令,比如 RUN、COPY 等,这些指令,在当前镜像构建时并不会被执行,只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行

下面是Dockerfile的一个完整例子,该Dockerfile将构建一个安装了sshd服务的image

  1. FROM ubuntu:14.04
  2. ENV http_proxy http://192.168.0.226:3128
  3. ENV https_proxy https://192.168.0.226:3128
  4. RUN apt-get update && apt-get install -y openssh-server
  5. RUN mkdir -p /var/run/sshd
  6. EXPOSE 22
  7. ENTRYPOINT /usr/sbin/sshd -D

示例:

  1. 以上文的Dockerfile构建一个image

    1. $ sudo docker build -t ubuntu:latest
  2. 通过以下命令可以看到这个生成的image:

    1. docker images | grep ubuntu