安全地将镜像从一个主机复制到另一个主机
摘要
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
命令中使用的传输语法很有用。
历史
- 2021年7月,最初由Charlie Doern撰写。