文章目录



#1 获取镜像


  • 命令:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
  • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
  • 仓库名:仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
    #2 查看镜像
  • 列出镜像:docker image ls
  • 信息列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间
  • 镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签
  • 虚悬镜像:由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image)
  • 显示:docker image ls -f dangling=true
  • 删除:docker image prune
  • 中间层镜像:是一种无标签镜像,是其它正在使用的镜像所依赖的镜像,不容有失
  • 查看命令:docker image ls -a
  • 列出部分镜像:
  • 根据仓库名列出镜像:docker image ls 仓库名
  • 列出特定的某个镜像:docker image ls 仓库名:标签
  • 过滤操作:
  • 之前:docker image ls -f before=仓库名:标签
  • 之后:docker image ls -f since=仓库名:标签 #3 删除镜像
  • 命令:docker image rm [选项] <镜像1> [<镜像2> ...]
  • <镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要
  • 镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签
  • Docker镜像的删除过程:
  • 第一步:将满足要求的所有镜像标签都取消,这就是看到的 Untagged 信息
  • 第二步:确定是否还有不同的标签指向这个镜像,是的话就不能删除该镜像,仅仅实现了标签的移除,假如没有其它的标签指向该镜像,则可以删除镜像。
  • 复合命令:
  • docker image rm $(docker image ls -q 仓库名)
  • docker image rm $(docker image ls -q -f before=仓库名:标签) #4 定制镜像
    ##4.1 利用 commit 理解镜像构成
  • 不提倡使用commit定制镜像,用来理解镜像的构成:
  • 第一步:运行镜像,启动容器
  • 第二步:进入容器
  • 第三步:改动内容
  • 第四步:提交改动,保存容器为镜像
  • 第五步:查看镜像历史
    ##4.2 使用 Dockerfile 定制镜像
  • 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,这个脚本就是 Dockerfile。
  • Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
  • 定制镜像,是以一个镜像为基础,在其上进行定制。而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。
  • Docker 还存在一个特殊的镜像,名为 scratch。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。如果你以 scratch 为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。
  • RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一,其格式有两种:
  • shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。
  • exec 格式:RUN [“可执行文件”, “参数1”, “参数2”]
  • Dockerfile 中每一个指令都会建立一层,RUN 也不例外。每一个 RUN 的行为,新建立一层,在其上执行这些命令,执行结束后,commit 这一层的修改,构成新的镜像。
  • 构建镜像:docker build [选项] <上下文路径/URL/->