一、概念
Docker Image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件
可以将 Docker Image 理解成一个模板, 可以通过这个模板实例化出来很多容器
image 里面是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。每一层文件系统被称为一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker 镜像中每一层文件系统都是只读的
构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,就像上层把底层遮住了一样。使用时只会看到一个完全的整体,不知道里面有几层,也不清楚每一层所做的修改是什么
二、镜像命令
2.1 docker image
列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
# 别名
docker image ls, docker image list
- -a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
- --digests:显示镜像的摘要信息
- -f:显示满足条件的镜像
- --format:指定返回值的模板文件
- --no-trunc:显示完整的镜像信息
- -q:只显示镜像 ID
2.2 docker tag
标记某一镜像,将其归入某一仓库
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 别名
docker image tag
2.3 docker rmi
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 别名
docker image rm, docker image remove
- -f:强制删除
- --no-prune:不移除该镜像的过程镜像,默认移除
2.4 docker save
将指定镜像保存为tar归档文件
docker save [OPTIONS] IMAGE [IMAGE...]
# 别名
docker image save
- -o:输出到的文件
2.5 docker load
导入使用docker save命令导出的镜像
docker load [OPTIONS]
# 别名
docker image load
- --input,-i:指定导入的文件,代替 STDIN
- --quiet,-q:精简输出信息
3.6 docker image inspect
查看镜像的详细信息
docker image inspect [OPTIONS] IMAGE [IMAGE...]
docker inspect 会自动检查是镜像还是容器然后显示相应信息
3.7 docker history
显示镜像历史
docker history [OPTIONS] IMAGE
# 别名
docker image history
- -H , --human:大小和日期采用人容易读的格式展现
- --no-trunc:显示全部信息,不要隔断
- ○ -q,--quiet:只显示镜像 id 信息
3.8 docker import
从归档文件中创建镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# 别名
docker image import
- -c:应用 docker 指令创建镜像
- -m:提交时的说明文字
3.9 docker image prune
删除不使用的镜像
docker image prune [OPTIONS]
- -a,--all:删除全部不使用的镜像
- --filter filter:指定过滤条件
- -f,--force:不提示是否删除
3.10 docker build
docker build命令用于使用Dockerfile创建镜像
docker build [OPTIONS] PATH | URL | -
- --build-arg=[]:设置镜像创建时的变量
- -f:指定要使用的 Dockerfile 路径
- --label=[]:设置镜像使用的元数据
- --no-cache:创建镜像的过程不使用缓存
- --pull:尝试去更新镜像的新版本
- --quiet,-q:安静模式,成功后只输出镜像 ID
- --tag,-t:镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
- --network:默认default。在构建期间设置 RUN 指令的网络模式