Docker | docker 技术入门与实战(第八章 | 读书笔记)

第八章 使用Dockerfile创建镜像

  Dockerfile是一个文本格式的配置文件, 用户可以使用Dockerfile来快速创建自定义的镜像。

8.1基本结构

  Dockerfile 由一行行命令语句组成, 并且支持以#开头的注释行。
  一般而言, Dockerfile主体内容分为四部分:基础镜像信息维护者信息镜像操作指令容器启动时执行指令
  示例:
在这里插入图片描述
在这里插入图片描述
  首行可以通过注释来指定解析器命令,后续通过注释说明镜像的相关信息。主体部分首 先使用FROM指令指明所基于的镜像名称,接下来一般是使用LABEL指令说明维护者信息。后面则是镜像操作指令,例如RUN指令将对镜像执行跟随的命令。每运行一条RUN指令,镜像添加新的一层,并提交。 最后是CMD指令,来指定运行容器时的操作命令。
  下面是Docker Hub 上两个热门镜像nginx 和 Go的Dockerfile的例子,通过这两个例子。读者可以对Dockerfile结构有个基本的感知。

示例一: debian:j essie基础镜像基础上安装Nginx 环境, 从而创建一个新的 nginx镜像。
在这里插入图片描述

示例二: 基于buildpack-deps:jessie-scm基础镜像,安装 Golang相关环境,制作一个 Go语言的运行环境镜像。
在这里插入图片描述
在这里插入图片描述
下面,将讲解 Dockerfile 中各种指令的应用。

8.2 指令说明

  Dockerfile 中指令的一般格式为 INSTRUCTION argumen七s, 包括 “配置指令" (配置 镜像信息)和 “操作指令"(具体执行操作),参见表 8-1。
在这里插入图片描述
在这里插入图片描述

8.2.1 配置指令

  1. ARG
    定义创建镜像过程中使用的变量
    在这里插入图片描述
      在执行 docker build时,可以通过 -build-arg[=] 来为变量赋值。当镜像编译成功后,ARG指定的变量将不再存在 (ENV指定的变量将在镜像中保留)。Docker 内置了一些镜像创建变量,用户可以直接使用而无须声明,包括(不区分大小
    写) HTTP_PROXY、 HTTPS_PROXY、 FTP_PROXY、 NO _PROXY。

  2. FROM
    指定所创建镜像的基础镜像
    在这里插入图片描述
      任何Dockerfile 中第一条指令必须为FROM指令。 并且, 如果在同一个Dockerfile 中创建多个镜像时, 可以使用多个FROM指令(每个镜像一次)。
      为了保证镜像精简, 可以选用体积较小的镜像如Alpine或Debian作为基础镜像。 例如:
    在这里插入图片描述

  3. LABEL
      LABEL指令可以为生成的镜像添加元数据标签信息。 这些信息可以用来辅助过滤出特定镜像。
    在这里插入图片描述

  4. EXPOSE
    声明镜像内服务监听的端口
    在这里插入图片描述
      注意该指令只是起到声明作用,并不会自动完成端口映射. 如果要映射端口出来, 在启动容器时可以使用 -P参数 (Docker主机会自动分配一个宿主 机的临时端口)或-p HOST_PORT:CONTAINER_PORT 参数(具体指定所映射的本地端口)。

  5. ENV

发布了35 篇原创文章 · 获赞 4 · 访问量 969

猜你喜欢

转载自blog.csdn.net/qq_41980405/article/details/104294799