5.12. 导出和导入容器
您可以使用 podman export
命令将正在运行的容器的文件系统导出到本地机器上的 tar 包中。例如,如果您有一个大容器,不常使用,或者您想要保存快照以便以后恢复该容器,则您可以使用 podman export
命令将正在运行的容器的当前快照导出到 tar 包中。
您可以使用 podman import
命令导入 tar 包,并将其保存为文件系统镜像。然后您可以运行此文件系统映像,或者将其用作其他镜像的层。
先决条件
-
container-tools
元数据包已安装。
流程
根据
registry.access.redhat.com/ubi9/ubi
镜像运行myubi
容器:$ podman run -dt --name=myubi registry.access.redhat.com/9/ubi
可选:列出所有容器:
$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a6a6d4896142 registry.access.redhat.com/9:latest /bin/bash 7 seconds ago Up 7 seconds ago myubi
附加到
myubi
容器:$ podman attach myubi
创建名为
testfile
的文件:[root@a6a6d4896142 /]# echo "hello" > testfile
-
使用
CTRL+p
和CTRL+q
从容器分离。 将
myubi
的文件系统导出为本地机器上的myubi-container.tar
:$ podman export -o myubi.tar a6a6d4896142
可选:列出当前目录内容:
$ ls -l -rw-r--r--. 1 user user 210885120 Apr 6 10:50 myubi-container.tar ...
可选:创建一个
myubi-container
目录,提取myubi-container.tar
存档中的所有文件。以树形格式列出myubi-directory
的内容:$ mkdir myubi-container $ tar -xf myubi-container.tar -C myubi-container $ tree -L 1 myubi-container ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib64 -> usr/lib64 ├── lost+found ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── testfile ├── tmp ├── usr └── var 20 directories, 1 file
您可以看到
myubi-container.tar
包含容器文件系统。导入
myubi.tar
,并将其保存为文件系统镜像:$ podman import myubi.tar myubi-imported Getting image source signatures Copying blob 277cab30fe96 done Copying config c296689a17 done Writing manifest to image destination Storing signatures c296689a17da2f33bf9d16071911636d7ce4d63f329741db679c3f41537e7cbf
列出所有镜像:
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/myubi-imported latest c296689a17da 51 seconds ago 211 MB
显示
testfile
文件的内容:$ podman run -it --name=myubi-imported docker.io/library/myubi-imported cat testfile hello
其他资源
-
系统中
podman-export
和podman-import
man page