如何在不使用仓库的情况下将 Docker 镜像从一台主机复制到另一台主机?

dockeroperating systemopen source更新于 2026/2/14 7:22:17

如果您的本地机器上有一个 Docker 镜像,并且您希望将该镜像复制到另一台机器,有两种方法可以实现。第一种是将该镜像推送到仓库,例如 Dockerhub 注册表中的仓库。您需要在 Dockerhub 中拥有一个帐户,然后才能使用 Docker push 命令将镜像推送到该仓库。

但是,如果您不想经历创建帐户、标记镜像等繁琐的麻烦,还有其他一些简单的方法可以使用。让我们在本文中了解所有这些方法。

方法 1. 从 TAR 文件保存和加载镜像

Docker 允许您使用 Docker save 命令将镜像保存到 tar 文件中。这也会压缩整个镜像,让您轻松快速地共享它们。然后,您可以在另一台机器上使用 Docker load 命令从 tar 文件加载 Docker 镜像。执行此操作的命令如下:

$ docker save -o <源主机中的 tar 文件路径> <镜像名称>

然后,您可以使用 cp、rsync、scp 等简单工具或任何其他您喜欢的方法复制此 tar 文件。接下来,您可以使用 Docker load 命令从此 tar 文件恢复镜像。

$ docker load -i <镜像 tar 文件的路径>

方法 2. 通过 SSH 复制 Docker 镜像

您还可以通过 SSH 传输 Docker 镜像,并使用 bzip 压缩内容以进行动态压缩。执行此操作的命令是 -

$ docker save <image> | bzip2 | \
    ssh user@host 'bunzip2 | docker load'

如果您想检查传输过程,可以通过管道使用 pv。

$ docker save <image> | bzip2 | pv | \
   ssh user@host 'bunzip2 | docker load'

方法 3. 使用 Docker Machine 复制 Docker 镜像

如果您有两台 Docker Machine - machine1 和 machine2,则可以使用以下命令复制镜像。

$ docker $(docker-machine config machine1) save <image> | docker $(docker-machine config machine2) load

方法 4. 使用 DOCKER_HOST 变量复制镜像

您也可以使用 DOCKER_HOST 变量将镜像从一台主机复制到另一台主机。您需要 SSH 凭据,并且本地和远程计算机上的用户都应位于 Docker 组中。

$ docker save <image name>:<tag-name> | gzip | DOCKER_HOST=ssh://user@remotehost docker load

方法 5. 使用 Docker-push-ssh 复制镜像

您还有另一个名为 docker-push-ssh 的命令行实用程序。它将帮助您在主机服务器上临时设置一个私有 Docker 镜像仓库。然后,它将从本地主机创建一个 SSH 隧道。接下来,它将推送 Docker 镜像并自动清理。

使用此方法(而非 docker save 命令)的优势在于,在这种情况下,只有新的层会被推送到服务器。这样可以加快上传速度。

为此,您必须首先使用以下 pip 命令安装 docker-push-ssh。

$ pip install docker-push-ssh

然后,您可以使用一行命令推送镜像。

$ docker-push-ssh -i ~/your-ssh-key your-username@your-server.com <docker-image>

方法 6. 使用 Docker Machine scp 传输镜像

Docker Machine scp 的创建目的是将文件从一台特定的 Docker 机器复制或传输到另一台。如果您想将镜像从本地机器复制到 AWS 或 Digital Ocean 等云上的远程 Docker 机器,它将变得非常方便。这是因为 Docker Machine 会自动处理 SSH 凭据。

为此,您可以按照以下步骤操作 -

  • 使用 Docker save 命令。
$ docker save -o <tar-file-location> <image name>
  • 使用 docker machine scp 传输 Docker 镜像。
$ docker-machine scp ./image-tar.tar target-machine:/home/ubuntu

其中,target-machine 是远程机器的名称,/home/ubuntu 是目标位置,image-tar 是 tar 文件的名称。

  • 加载 tar 文件。
$ docker-machine ssh target-machine sudo docker load -i image-tar.tar

总而言之,在本文中,我们讨论了 6 种不同的方法,您可以使用这些方法将 Docker 镜像从一台本地机器复制或传输到另一台远程机器,而无需使用任何 Docker 注册表或存储库。根据您的方便和要求,您可以轻松使用任何讨论的方法。


相关文章