Docker进阶:容器与镜像的导入和导出


💖The Begin💖点点关注,收藏不迷路💖

在这里插入图片描述

在 Docker 中,导入和导出容器以及镜像是常见的操作,特别是在需要迁移、备份或共享容器和镜像时

1、容器(Container)和镜像(Image)的区别

镜像(Image):

1、镜像是一个只读的模板,包含了执行环境和应用程序所需的所有内容,比如文件系统、库和依赖、以及一个启动容器的配置等。镜像可以看作是一个应用程序的打包和分发形式。

2、镜像是静态的,一旦创建就不会改变。镜像通常通过 Dockerfile 来定义构建规则,并且可以基于其他镜像进行扩展和定制。

容器(Container):

1、容器是从镜像创建的运行实例,它包括了镜像的内容以及在运行时所添加的可写层。

2、容器可以被启动、停止、删除,并且可以与其他容器或主机进行通信。

3、容器是动态的,可以随时启动、停止和修改。每个容器都是相互隔离的,拥有自己的文件系统、网络和进程空间。

2、导出 Docker 容器

1、使用 docker ps -a 命令查看当前所有容器的列表,并找到要导出的容器的 Container ID。

##列出当前正在运行的容器
docker ps

##列出所有的容器,包括正在运行的和已经停止的容器
docker ps -a

例如,导出当前运行的名为mysql-5.7的容器:

在这里插入图片描述

导出容器快照:

##语法
docker export 容器ID或容器名 > 容器快照名.tar

docker export mysql-5.7 > mysql-5.7-container.tar

或者

docker export ac8738c10dc9 > mysql-5.7-container02.tar

在这里插入图片描述

完成后,将会在当前目录下生成一个名为 mysql-5.7-container.tar 的容器快照文件。

3、导入 Docker 容器快照为镜像

如果需要将容器快照导入为镜像,可以按照以下步骤进行操作:

例如:将上面导出的mysql-5.7-container.tar 的容器快照导入为名为mysql-5.7-02的镜像。

在这里插入图片描述

1、运行以下命令导入容器快照为镜像:

cat mysql-5.7-container.tar | docker import - mysql-5.7-02:5.7

替换 IMAGE_NAME 和 TAG 为你希望为新镜像指定的名称和标签。

[root@zyl-server ~]# cat mysql-5.7-container.tar | docker import - mysql-5.7-02:5.7
sha256:9f36bbbdf4ae7c14944158d70dc2111b7393cf0253d5d37c487e9dbfa199c5c3
[root@zyl-server ~]# 
[root@zyl-server ~]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
mysql-5.7-02   5.7       9f36bbbdf4ae   5 seconds ago   442MB
nginx          latest    605c77e624dd   2 years ago     141MB
mysql          5.7       c20987f18b13   2 years ago     448MB
[root@zyl-server ~]# 

在这里插入图片描述

4、导出 Docker 镜像

接下来,让我们看看如何导出一个 Docker 镜像:

1、使用 docker images 命令查看当前系统中所有的 Docker 镜像,并找到要导出的镜像的 REPOSITORY 和 TAG。

docker images 

2、运行以下命令导出镜像,(通常是.tar格式):

例如:将镜像名为mysql,TAG为5.7的镜像导出为 image_mysql.tar

在这里插入图片描述

##将镜像名为mysql,TAG为5.7的镜像导出为 image_mysql.tar

docker save -o image_mysql.tar mysql:5.7

即可将 Docker 镜像保存到名为 image_mysql.tar 的压缩文件中。

在这里插入图片描述

5、导入 Docker 镜像

最后,让我们看看如何导入一个 Docker 镜像:

1、将包含要导入的镜像文件(如 image_mysql.tar)传输到目标机器。

2、运行以下命令导入镜像:

docker load -i image_mysql.tar

在这里插入图片描述

镜像成功导入后,你可以使用 docker images 命令确认镜像已经加载到系统中。

通过以上步骤,你可以轻松地导入和导出 Docker 容器以及镜像,实现容器和镜像的迁移、备份和共享。

6、docker export 和 docker save区别

1、docker export

1、导出容器的文件系统内容,并不包含镜像的元数据和层信息,因此导出的内容不能完全恢复成一个镜像,它只代表容器在导出时的快照状态。

2、使用 docker import 命令将该tar文件导入时,只能创建一个新的镜像,而无法还原容器的完整状态。

2、docker save

1、用于将一个或多个镜像打包成一个归档文件(通常是一个 .tar 文件)。

2、将镜像保存为一个归档文件,包含了镜像的元数据、层信息以及实际的镜像内容。导出的归档文件可以通过 docker load 命令重新加载到 Docker 环境中。

如果需要完整的镜像备份、迁移以及进行回滚操作,建议使用 docker save 和 docker load 命令。

7、docker import 和 docker load区别

1、docker import

1、使用 docker import 命令将一个本地的文件系统打包成一个 Docker 镜像,可以为该镜像指定一个新的名称和标签。

2、docker load

1、从归档文件中加载镜像(通过 docker save 命令导出的)。

2、包含了其相关的元数据。

3、在加载镜像时,它会保持原有的名称和标签(不能修改)。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

相关推荐

  1. docker导出导入镜像容器

    2024-03-14 09:24:05       47 阅读
  2. docker 镜像导入导出方法

    2024-03-14 09:24:05       26 阅读
  3. linux系统中docker镜像创建、导入导出执行

    2024-03-14 09:24:05       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 09:24:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 09:24:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 09:24:05       82 阅读
  4. Python语言-面向对象

    2024-03-14 09:24:05       91 阅读

热门阅读

  1. 「jQuery系列」jQuery Cookie插件功能介绍

    2024-03-14 09:24:05       45 阅读
  2. 在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt

    2024-03-14 09:24:05       42 阅读
  3. 小马哥yyds

    2024-03-14 09:24:05       41 阅读
  4. 2024-01-重学MySQL

    2024-03-14 09:24:05       33 阅读
  5. Horovod分布式深度学习框架

    2024-03-14 09:24:05       45 阅读
  6. 数据对比与处理利器——Pandas 实战

    2024-03-14 09:24:05       40 阅读