文章目录
docker 镜像管理
镜像基础操作
镜像概念
Image
IT 领域,镜像通常是指一系列文件或一个磁盘驱动器的精确副本,和 ZIP 压缩文件类似
- Ghost 镜像:以前经常装 PC 电脑上用的经典软件,虽然我重来不用,我更喜欢用微软原生的那种镜像
- 在云环境下,一些企业大大小小都有自己的硬件服务器(这里说的是实体物理机),我们在物理上面一般会做虚拟化操作,这时候的镜像其实就是一个虚拟机模块,我们在虚拟化平台上通过镜像来安装虚拟机
- 与之类似的,Docker 镜像就是用来创建 Docker 容器的只读模板,它是一个特殊的文件系统,不包含任何动态数据,其内容在构建之后再也不会改变,是创建容器的基础
认识镜像
docker images
列出当前 Docker 主机所拥有的镜像列表
- 镜像的名称(REPOSITORY+TAG):镜像 ID 能够保证镜像的唯一性,但是不便于记忆,可以使用镜像名称进行操作
- 镜像的摘要信息(REPOSITORY@摘要值)
Dockerfile
Dockerfile
默认使用 Dockerfile 文件来描述镜像,Docker 引擎通过读取文件中的指令自动构建镜像
官方示例:
FROM scratch # 定义基础镜像
COPY hello / # 将本机目录所在的文件复制到镜像文件系统的根目录
CMD ["/hello"] # 通过镜像来启动容器时执行的命令
基础镜像与父镜像
- 父镜像(parent image) 镜像的 Dockerfile 文件中 FROM 指令指定的镜像
- 基础镜像(base image)镜像的 Dockerfile 文件中没有 FROM 指令或 FROM 指令的值是 scratch (空白镜像) 所构成的镜像
- 大多数镜像都是从父镜像开始构建
分层结构
传统镜像分层
- 通过联合文件系统,将处于不同层的1、2、3文件叠加在一起,呈现一个完整的文件系统
- 便于修改,哪层有问题,不需要修改整个镜像,只需要修改该层的镜像
- 共享同一个底层镜像,内存也只加载同一个底层镜像,不同镜像的相同部分作为一个独立的镜像层,节省磁盘空间
- AUFS 是联合文件系统的经典实现,采用了文件的 【写时拷贝】技术
- 也有一些缺点:
- 镜像的层数会越来越多?联合文件系统的层数是有一定的限制
- 许多上层的应用基于相同的底层镜像,如果底层镜像需要修改,维护工作量较大
- 无法对镜像进行审计,不知道如何创建出来,谁创建的
基于Dockerfile的镜像分层
- 每一层由镜像的 Dockerfile 指令决定的
- 除了最后一层,每一层都是只读的
镜像基本操作
拉取镜像
docker pull <镜像>
- 本地拉取一个不存在的镜像的时候,会自动去根据镜像名称下载这个镜像,如果不带镜像地址,默认就会从官方的注册中心拉取
- 如果没有镜像地址,默认拉取官方镜像仓库地址:docker.io(镜像地址)+library(命名空间)+busybox(镜像名称)+镜像标签
显示镜像列表
命令 | 说明 |
---|---|
docker image ls | 显示本地镜像列表 |
docker images | 显示本地镜像列表 |
docker images -a | 显示所有镜像 |
docker images --no-trunc | 显示完整的镜像信息 |
docker images -q | 只显示镜像的ID |
docker images --digests | 显示镜像的摘要值等信息 |
docker images centos | 基于具体的镜像标识来显示镜像信息 |
docker images -f dangling=true | 显示没有TAG的镜像信息 |
设置镜像标签
docker tag 源镜像的标识 目标镜像的标识
:也就是个镜像重命名一下,不影响原来的镜像
命令 | 说明 |
---|---|
docker tag busybox:latest demo:v1 | 给镜像重新打上标签 |
docker tag df8662dadd4f demo:v2 | 通过镜像ID重新打上标签 |
查看镜像详情
docker inspect <镜像标识>
命令 | 说明 |
---|---|
docker inspect 9211bbaa0dbd | 通过镜像ID查看镜像的详细信息 |
docker inspect centos:7 | 通过镜像名称查看镜像的详细信息 |
docker inspect --format=‘{ {.Architecture}}’ 9211bbaa0dbd | 可以指定格式显示(感觉不好用) |
查看镜像构建历史
docker history <镜像标识>
命令 | 说明 |
---|---|
docker history centos:7 | 查看镜像构建历史 |
docker history centos:7 --no-trunc | 查看镜像构建历史饼显示完整的操作命令(显示不够友好) |
docker history centos:7 -H=false | 镜像大小和构建时间格式输出,更具体 |