Docker(七):Docker build 、Docker Dockerfile 详解 您所在的位置:网站首页 dockerbuild命令 Docker(七):Docker build 、Docker Dockerfile 详解

Docker(七):Docker build 、Docker Dockerfile 详解

2024-07-01 09:04| 来源: 网络整理| 查看: 265

什么是dockerfile?

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

例: 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。 docker build -t ces/nginx:laster . 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。 docker build github.com/creack/docker-firefox 也可以通过 -f Dockerfile 文件的位置: docker build -f /path/to/a/Dockerfile . docker build 语法 docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

–build-arg=[] :设置镜像创建时的变量;–cpu-shares :设置 cpu 使用权重;–cpu-period :限制 CPU CFS周期;–cpu-quota :限制 CPU CFS配额;–cpuset-cpus :指定使用的CPU id;–cpuset-mems :指定使用的内存 id;–disable-content-trust :忽略校验,默认开启;-f :指定要使用的Dockerfile路径;–force-rm :设置镜像过程中删除中间容器;–isolation :使用容器隔离技术;–label=[] :设置镜像使用的元数据;-m :设置内存最大值;–memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;–no-cache :创建镜像的过程不使用缓存;–pull :尝试去更新镜像的新版本;–quiet, -q :安静模式,成功后只输出镜像 ID;–rm :设置镜像成功后删除中间容器;–shm-size :设置/dev/shm的大小,默认值是64M;–ulimit :Ulimit配置。**–tag, -t: ** 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。**–network: ** 默认 default。在构建期间设置RUN指令的网络模式 Dockerfile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。

在这里列出了一些常用的指令。

FROM:指定基础镜像,必须为第一个命令

格式:   FROM   FROM :   FROM @示例:  FROM mysql:5.6

注:  tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像

MAINTAINER: 维护者信息 格式: MAINTAINER 示例: MAINTAINER Jasper Xu MAINTAINER [email protected] MAINTAINER Jasper Xu RUN:构建镜像时执行的命令 RUN用于在镜像容器中执行命令,其有以下两种命令执行方式: shell执行 格式: RUN exec执行 格式: RUN ["executable", "param1", "param2"] 示例: RUN ["executable", "param1", "param2"] RUN apk update RUN ["/etc/execfile", "arg1", "arg1"]

注:  RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定–no-cache参数,如:docker build --no-cache

ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget 格式: ADD ... ADD ["",... ""] 用于支持包含空格的路径 示例: ADD hom* /mydir/ # 添加所有以"hom"开头的文件 ADD hom?.txt /mydir/ # ? 替代一个单字符,例如:"home.txt" ADD test relativeDir/ # 添加 "test" 到 `WORKDIR`/relativeDir/ ADD test /absoluteDir/ # 添加 "test" 到 /absoluteDir/ COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源 CMD:构建容器后调用,也就是在容器启动时才进行调用。 格式: CMD ["executable","param1","param2"] (执行可执行文件,优先) CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数) CMD command param1 param2 (执行shell内部命令) 示例: CMD echo "This is a test." | wc - CMD ["/usr/bin/wc","--help"]

注:   CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。

ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。 格式: ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先) ENTRYPOINT command param1 param2 (shell内部命令) 示例: FROM ubuntu ENTRYPOINT ["top", "-b"] CMD ["-c"]

注:   ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。

LABEL:用于为镜像添加元数据 格式: LABEL =


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有