# Docker 镜像
# 1. 基本概念
在 Docker 中,镜像是一个包含应用程序及相关依赖库的文件,在 Docker 容器启动的过程中,它以只读的方式被用于创建容器运行的基础环境。
如果把容器理解为应用程序运行的虚拟环境,那么镜像就是这个环境的持久化副本(存档)。
在 Docker 中,镜像名称主要分为三部分:namespace
/ repository
: tag
。例如:
library/nginx:stable
library/nginx:1.18.0
要素 | 说明 |
---|---|
namespace | 镜像的名字空间,用于区别同名镜像。通常,namespace 是镜像的作者的名字。 |
Repository | 镜像的名称。通常会采用镜像中 “那个” 要运行的应用程序命名。 |
tag | 镜像的标签,一般是镜像的版本。 |
对于任意一个镜像而言,上述三者的组合一定是唯一的。另外,每个镜像都有一个唯一的 ID(一个 64 位的十六进制字符串)。
Docker 的镜像是一个分层结构,镜像的每一层都是在原有层的基础上进行改动的。
简单来说,你所看到的 “一个” Docker 镜像实际上是由好几个部分拼凑在一起形成的。这也是为什么你在下载 docker 镜像的时候有好几个进度条在 “跑” ,而你在删除 “一个” Docker 镜像时,会显示你删除了好几个东西。
# 2. 获取镜像
docker pull 命令(略)。
# 3. 镜像的迁移
镜像的导入/导出是虚拟化过程中最基础的操作。
使用 docker save 命令可将本地镜像库中的镜像导出:
docker save ubuntu:latest > ubuntu.tar
另外,docker save 命令支持同事导出多个镜像:
docker save -o image.tar ubuntu:lasted centos:latest
要将导出的镜像数据重新导入到本地的镜像仓库中,可以使用 docker load 命令:
docker load -i ubuntu.tar
或
docker load < ubuntu.tar