实现 Docker 导出的示例
以下是示例:
场景 1:docker 替换镜像内文件
我们已经构建了一个 nginx Docker 镜像,并且一个容器正在使用这个 Docker 镜像运行,但是当我们浏览 Web 应用程序时,我们意识到主页上缺少一些东西。我们需要更新主页并创建一个新的 Docker 镜像,但是使用 Dockerfile 从头开始构建镜像需要更多时间,因此我们将在容器运行时更改 index.html 文件并导出容器然后将其作为 Docker 镜像导入。让我们开始吧:
1.下面是 Dockerfile 和 index.html 文件的片段:
index.html
代码:
<!DOCTYPE html>
<html>
<head>
<title>Docker Export</title>
</head>
<body>
<h1>Example of Docker export</h1>
</body>
</html>
文件
FROM ubuntu
RUN apt-get update && apt-get install -y nginx
add index.html /var/www/html
CMD ["nginx", "-g", "daemon off;"]
2.使用以下命令构建名为“my-nginx”的 docker 镜像:
docker build -t my-nginx
注意:如果 Dockerfile 不在当前工作目录中,则使用 Dockerfile 的完整路径。
输出:

3.使用上面的 Docker 镜像运行一个容器,如下所示:
docker run -d -p 80:80 my-nginx
输出:


4.现在,假设我们需要将标题“Example of Docker Export”的背景颜色更改为蓝色,因此我们将更新正在运行的容器中的 index.html 文件并使用以下命令将其导出为存档:
命令:
sudo docker exec -it 44 sh
将 index.html 文件中的“<h1>Example of Docker export</h1>”行替换为下面的行,如快照所示:
<h1 style="background-color:DodgerBlue;">Example of Docker export</h1>
输出:

5.使用以下命令进行更改后导出正在运行的容器,并将其导入为名为“my-nginx:v2”的 Docker 镜像;
命令:
docker export 44 > my-nginx.tar
docker import -c ‘CMD [“nginx”, “-g”, “daemon off;”]’ my-nginx.tar my-nginx:v2
docker run -d -p 8081:80 my-nginx:v2
输出:

说明:使用导入的 Docker 文件运行一个新容器以验证更改是否按预期成功应用,当我们浏览默认页面时,我们可以看到下图中标题的背景颜色已更改为蓝色。

场景 2:创建单层 Docker 镜像
当我们创建一个 Docker 镜像时,它有多个层,因为 Dockerfile 中的每条指令都会在构建镜像时创建一个层。如果我们想创建一个单层的 Docker 镜像来增强容器的性能,我们将容器导出并作为 Docker 镜像导入,如下所示:
1.使用以下命令检查任何 Docker 镜像的层:
语法:
docker image history <image_name>
命令:
docker image history my-nginx
输出:

2.现在,再次使用此镜像运行容器并将其导出为存档:
命令:
docker run -d -p 80:80 --name nginx-container my-nginx
docker export nginx-container > my-nginx.tar
输出:

3.使用如下docker 命令将镜像导出成tar包,并检查新导入的 Docker 镜像的历史记录:
命令:
docker import -c 'CMD ["nginx", "-g", "daemon off;"]' -m "single layer Docker image" my-nginx.tar my-nginx:v3
docker image history my-nginx:v3
输出:

说明:在上面的快照中,我们可以看到导入导出的存档后只有一层显示。它有助于提高性能,但是 Docker 不推荐这样做,因为 Docker 鼓励构建多层 Docker 镜像以使用镜像构建过程的缓存功能。
Docker 导出的优势
- 速度:如果需要任何小的更改,Docker 导出比重新构建 Docker 镜像要快。
- 镜像共享:众所周知,如果要共享 Docker 镜像,我们需要将其推送到仓库,但是,我们可以使用 Docker 导出将其导出为存档,并且可以像共享文件一样与其他人共享。
- 性能:当我们使用 Docker import 导入导出的档案时,它会创建一个单层 Docker 镜像,从而提高容器的性能。
结论
Docker Export是一个命令行工具,用于将任何容器导出为存档,存档包含一个常规 Linux 文件系统,其中包含除已安装卷数据之外的所有容器数据。docker export 和 docker import 这两个命令通常一起使用。
推荐文章
这是 Docker Export指南。在这里,我们将讨论docker导出镜像到本地的介绍及其优点以及 docker 镜像导出成tar包的示例和代码实现。
本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –