跳到主要内容

安全地将镜像从一个主机复制到另一个主机

摘要

podman image scp [选项] 镜像名[:标签]

描述

podman image scp 命令用于在网络上的主机之间复制容器镜像。此命令可以将镜像复制到远程主机,也可以从远程主机复制镜像,甚至可以在两个远程主机之间复制镜像。

注意:使用 :: 来指定镜像名称取决于 Podman 是保存还是加载镜像。同一台机器上的 rootful 存储和 rootless 存储之间的镜像传输也可以在不使用 sshd 的情况下进行。此功能不支持远程客户端,包括 Mac 和 Windows(WSL2 除外)机器。

选项

--help, -h

显示用法说明

--quiet, -q

抑制输出

示例

将指定的镜像复制到本地存储:

$ podman image scp alpine
Loaded image: docker.io/library/alpine:latest

将本地存储中的指定镜像复制到远程连接:

$ podman image scp alpine Fedora::/home/charliedoern/Documents/alpine
Getting image source signatures
Copying blob 72e830a4dff5 done
Copying config 85f9dc67c7 done
Writing manifest to image destination
Storing signatures
Loaded image: docker.io/library/alpine:latest

将远程连接中的指定镜像复制到另一个远程连接:

$ podman image scp Fedora::alpine RHEL::
Loaded image: docker.io/library/alpine:latest

在使用 podman image scp 命令时,请确保您具有适当的权限,并且远程主机之间的网络连接是安全的。此外,您可能需要在远程主机上配置 SSH 访问权限,以便 Podman 能够通过 SSH 进行通信。请根据您的环境和需求调整命令和选项。

通过 SSH 将指定镜像复制到本地存储

$ podman image scp charliedoern@192.168.68.126:22/run/user/1000/podman/podman.sock::alpine
警告[0000] 给定的连接名称未知。请使用系统连接添加命令来指定默认的远程套接字位置
正在获取镜像源签名
正在复制 blob 9450ef9feb15 [--------------------------------------] 0.0B / 0.0B
正在复制配置 1f97f0559c 完成
正在将清单写入镜像目标位置
正在存储签名
已加载镜像:docker.io/library/alpine:latest

在这个例子中,我们使用 podman image scp 命令通过 SSH 将远程主机 192.168.68.126 上的 alpine 镜像复制到本地存储。注意,我们指定了远程主机的 SSH 地址和端口,以及 Podman 的 UNIX 套接字位置。然而,我们收到一个警告,提示我们使用了未知的连接名称。这通常意味着我们需要在本地系统上配置一个远程连接,以便 Podman 知道如何连接到远程主机。

从 root 账户将指定镜像复制到用户账户的本地存储

$ sudo podman image scp root@localhost::alpine username@localhost::
正在复制 blob e2eb06d8af82 完成
正在复制配置 696d33ca15 完成
正在将清单写入镜像目标位置
正在存储签名
正在获取镜像源签名
正在复制 blob 5eb901baf107 已跳过:已存在
正在复制配置 696d33ca15 完成
正在将清单写入镜像目标位置
正在存储签名
已加载镜像:docker.io/library/alpine:latest

在这个例子中,我们使用 sudo 来以 root 用户的身份运行 podman image scp 命令,并将 alpine 镜像从本地 root 账户复制到同一台机器上的另一个用户账户的 Podman 存储。

从 root 账户将指定镜像复制到本地存储

$ sudo podman image scp root@localhost::alpine
正在复制 blob e2eb06d8af82 完成
正在复制配置 696d33ca15 完成
正在将清单写入镜像目标位置
正在存储签名
正在获取镜像源签名
正在复制 blob 5eb901baf107
正在复制配置 696d33ca15 完成
正在将清单写入镜像目标位置
正在存储签名
已加载镜像:docker.io/library/alpine:latest

在这个例子中,我们使用 sudo 来以 root 用户的身份运行 podman image scp 命令,并将 alpine 镜像从本地 root 账户的 Podman 存储复制到同一台机器的当前用户的 Podman 存储。

另请参阅

  • podman(1): Podman 的主手册页,提供了关于 Podman 的基本用法和选项的信息。
  • podman-load(1): 用于从 tar 归档文件加载镜像的命令。
  • podman-save(1): 用于将镜像保存到 tar 归档文件的命令。
  • podman-remote(1): 提供了关于如何使用 Podman 远程客户端的信息。
  • podman-system-connection-add(1): 用于添加远程连接的命令,这对于配置 Podman 以连接到远程主机很有用。
  • containers.conf(5): Podman 和其他容器工具的配置文件文档。
  • containers-transports(5): 描述了容器镜像传输的文档,这对于理解 podman image scp 命令中使用的传输语法很有用。

历史