一.镜像(image)
1.概念
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]]
关键参数:
|------------|------------|
| -a | 列出本地所有的镜像 |
| --digests | 显示镜像的摘要信息 |
| -f | 显示满足条件的镜像 |
| --format | 指定返回值的模板文件 |
| --no-trunc | 指定返回值的模板文件 |
| -q | 只显示镜像ID |

2)docker tag
标记本地镜像,将其归入某一仓库。
语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
3)docker rmi
删除镜像。
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
关键参数:
|------------|------------------|
| -f | 强制删除 |
| --no-prune | 不移除该镜像的过程镜像,默认移除 |

4)docker save
将指定镜像保存成tar归档文件(包含文件系统内容的压缩包或tar包)。
语法:
docker save [OPTIONS] IMAGE [IMAGE...]
关键参数:
|----|--------|
| -o | 输出到的文件 |
5)docker load
导入使用docker save命令导出的镜像。
语法:
docker load [OPTIONS]
关键参数:
|------------|-----------------|
| --input,-i | 指定导入的文件,代替STDIN |
| --quiet,-q | 精简输出信息 |
6)docker image inspect
查看镜像详细信息。
语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]

7)docker history
显示镜像历史。
语法:
docker history [OPTIONS] IMAGE
关键参数:
|------------|------------------|
| -H,--human | 大小和日期采用人容易读的格式展现 |
| --no-trunc | 显示全部信息,不要隔断 |
| -q,--quiet | 只显示镜像id信息 |

8)docker import
从归档文件(包含文件系统内容的压缩包或tar包)中创建镜像。
语法:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
关键参数:
|----|----------------|
| -c | 应用docker指令创建镜像 |
| -m | 提交时的说明文字 |
9)docker image prune
删除不使用的镜像(悬空镜像,没有标签且未被任何容器使用)。
语法:
docker image prune [OPTIONS]
关键参数:
|------------|----------------------|
| -a,--all | 删除全部不使用的镜像(没被任何容器使用) |
| --filter | 指定过滤条件 |
| -f,--force | 不提示是否删除 |
10)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指令的网络模式 |
二.镜像仓库命令
1.docker login
登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
语法:
docker login [OPTIONS] [SERVER]
关键参数:
-u :登陆的用户名
-p :登陆的密码
2.docker pull
从镜像仓库中拉取或者更新指定镜像。
语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
关键参数:
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
3.docker push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。
语法:
docker push [OPTIONS] NAME[:TAG]
关键参数:
-a :推送所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
4.docker search
从 Docker Hub 查找镜像。
语法:
docker search [OPTIONS] TERM
关键语法:
--no-trunc :显示完整的镜像描述;
-f <过滤条件>:列出收藏数不小于指定值的镜像
5.docker logout
登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
语法:
docker logout [SERVER]