网站公告

本次更新:没啥更新的

“钱塘江上潮信起,今日方知我是我”

Skip to content

镜像 ​

字数: 0 字 时长: 0 分钟

1. 镜像概述 ​

镜像与容器的关系

Docker 镜像(Image)是用于创建容器的只读模板,其中包含应用程序以及运行所需的依赖、函数库、配置和部分运行环境。

简单来说,可以把镜像理解成一个已经准备好的“应用运行包”。镜像本身不会直接运行,只有基于镜像创建并启动容器后,应用程序才会真正运行起来。

例如:

text
mysql:8.0
redis:7
nginx:latest

这些都是 Docker 镜像。

同一个镜像可以创建多个相互独立的容器,例如:

text
mysql:8.0 镜像
    │
    ├── MySQL 容器 A
    ├── MySQL 容器 B
    └── MySQL 容器 C

可以简单理解为:

镜像是模板,容器是镜像运行后的实例。

镜像本身由多个只读层组成。容器运行过程中产生的数据、日志和文件变化不会直接修改原始镜像,而是写入容器自己的可写层,或者通过数据卷进行持久化。


2. 镜像名称 ​

Docker 镜像名称通常由 Repository 和 Tag 两部分组成:

text
[repository]:[tag]

例如:

text
mysql:5.7

其中:

  • mysql:Repository,表示镜像名称
  • 5.7:Tag,用于区分镜像的不同版本

Docker 镜像名称组成

因此:

text
mysql:5.7

表示 mysql 镜像的 5.7 标签版本。

如果拉取镜像时没有显式指定 Tag,Docker 默认使用 latest:

bash
docker pull nginx

等价于:

bash
docker pull nginx:latest

latest 只是默认使用的标签名称,并不严格代表镜像的“最新版本”,具体指向哪个镜像由镜像发布者决定。


3. 镜像常用命令 ​

Docker 镜像常见的操作主要包括查看、拉取、删除、推送、导出和导入。

命令作用人话理解常见用法
docker images查看本地已有的 Docker 镜像看看本机有哪些镜像docker images
docker rmi删除本地镜像把本地不用的镜像删掉docker rmi nginx:latest
docker pull从镜像仓库拉取镜像到本地从仓库下载镜像docker pull nginx:latest
docker push将本地镜像推送到镜像仓库把本地镜像上传到仓库docker push username/nginx:1.0
docker save将一个或多个镜像导出为本地归档文件把镜像打包成 .tar 文件docker save -o nginx.tar nginx:latest
docker load从本地归档文件中导入镜像把 .tar 镜像文件重新导入 Dockerdocker load -i nginx.tar

常见的镜像操作关系如下:

Docker 镜像常用命令

如果不清楚某个 Docker 命令的参数,可以通过:

bash
docker 命令 --help

查看帮助信息。

例如:

bash
docker save --help

4. 拉取与查看镜像 ​

下面以 Nginx 为例,从 Docker Hub 拉取镜像并查看本地镜像。

4.1 拉取镜像 ​

首先可以在 Docker Hub 中搜索需要的镜像:

DockerHub 搜索 Nginx 镜像

找到对应镜像后,通过 docker pull 将镜像拉取到本地:

bash
docker pull nginx

由于没有显式指定 Tag,因此默认拉取:

text
nginx:latest

执行结果:

拉取 Nginx 镜像

4.2 查看本地镜像 ​

镜像拉取完成后,可以通过:

bash
docker images

查看本地已有的镜像:

查看本地 Docker 镜像

可以看到,Nginx 镜像已经成功拉取到本地。


5. 镜像导出与导入 ​

Docker 支持将本地镜像导出为文件,也可以将镜像文件重新导入 Docker。

整个过程可以简单理解为:

text
本地 nginx 镜像
      ↓
docker save
      ↓
nginx.tar
      ↓
docker rmi
      ↓
删除本地 nginx 镜像
      ↓
docker load
      ↓
重新导入 nginx 镜像

5.1 导出镜像 ​

首先可以查看 docker save 命令的帮助信息:

bash
docker save --help

执行结果:

docker save 帮助信息

基本语法:

bash
docker save -o [保存的文件名称] [镜像名称]

例如,将本地的 nginx:latest 镜像导出为 nginx.tar:

bash
docker save -o nginx.tar nginx:latest

执行结果:

导出 Nginx 镜像

执行完成后,当前目录中会生成:

text
nginx.tar

这个文件中保存了对应的 Docker 镜像。

5.2 删除本地镜像 ​

为了验证后续的镜像导入操作,可以先将本地 Nginx 镜像删除:

bash
docker rmi nginx:latest

也可以通过镜像 ID 删除:

bash
docker rmi [IMAGE_ID]

执行结果:

删除 Nginx 镜像

再次执行:

bash
docker images

可以确认本地的 Nginx 镜像已经被删除。

5.3 导入镜像 ​

接下来通过 docker load,将之前导出的 nginx.tar 镜像重新导入 Docker:

bash
docker load -i nginx.tar

执行结果:

导入 Nginx 镜像

导入完成后,再次查看本地镜像:

bash
docker images

查看重新导入的 Nginx 镜像

可以看到,之前删除的 Nginx 镜像已经重新导入到本地。


6. 小结 ​

Docker 镜像可以理解为创建容器的模板,一个镜像可以创建多个独立运行的容器。

镜像名称通常采用:

text
repository:tag

例如:

text
mysql:8.0
nginx:latest
redis:7

镜像的基本操作主要包括:

text
docker pull     拉取镜像
docker images   查看镜像
docker rmi      删除镜像
docker save     导出镜像
docker load     导入镜像
docker push     推送镜像

可以简单记住:

pull 是从仓库下载镜像,push 是上传镜像;save 是把镜像导出成文件,load 是把镜像文件重新导入 Docker。

Noctiflorous Garden · MIT License