如何在 docker 个容器之间复制文件?

How to copy a file between docker containers?

我有两个不同的 docker 容器,每个容器都运行一个 PHP 应用程序。我必须解决的问题是将文件列表(使用 PHP copy 命令)从容器 1 复制到容器 2。

例如:

copy('var/www/html/uploads/test.jpg', 'var/www/html/site/uploads/test.jpg');

现在,容器 1 无法访问容器 2 site

解决此问题的最佳方法是什么?

使用共享卷传输数据。所以挂载

-v filetransfer:/var/www/html/transfer
or
--mount type=volume,source=filetransfer,destination=/var/www/html/transfer

到两个容器。如果两个容器 运行 不同的 non-root 用户,您必须确保相应地设置文件权限。 如果要避免文件损坏,请对除一个容器以外的所有容器使用 :ro (read-only) 或通过代码确保这一点。

其他评论:

  • docker cp 用于将文件从主机复制到容器,反之亦然。
  • 在我看来,构建一个 REST-API 来复制单个文件有点 over-engineered,只要您使用的是同一主机。