Docker 卷必须位于本地服务器上吗?

Docker 卷必须位于本地服务器上吗?

我正在将现有的节点应用程序docker化。该应用程序允许用户上传用户图像。我正在考虑创建一个docker卷映像,并在正在运行的容器之间共享它,以便它们都可以写入和读取这些图像。

问题:

  • 我可以在 Amazon 上部署 Docker 映像并期望所有实例都能访问它吗?
  • 我是否可以让映像在“云提供商 A”上运行,并允许其他 Docker 实例从“云提供商 B”访问它?

答案1

默认情况下,docker 卷位于容器运行所在的 docker 主机的本地(如默认驱动程序名称“local”所示)。要拥有可在多个 docker 主机上访问的 docker 卷,您需要指向外部存储。最常见的方法是使用 NFS 服务器:

  # create a reusable volume
  $ docker volume create --driver local \
      --opt type=nfs \
      --opt o=addr=192.168.1.1,rw \
      --opt device=:/path/to/dir \
      foo

  # or from the docker run command
  $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
    foo

您需要调整上面的 IP 和路径以及名称以匹配您自己的环境。

要跨多个云访问卷,您需要指向可从多个云访问的外部存储。

答案2

我可以在 Amazon 上部署 Docker 映像并期望所有实例都能访问它吗?

这是可能的,但它不是默认的,您需要对其进行配置。

如果你想共享任意文件,你需要设置一个集群文件系统。在亚马逊基础设施上执行此操作的更简单方法之一可能是设置S3 支持的存储驱动程序

如果你只想共享 docker 镜像,那么你可以简单地设置自己的私有docker注册表

我是否可以让映像在“云提供商 A”上运行,并允许其他 Docker 实例从“云提供商 B”访问它?

是的,但如果您不想让图像公开,则需要弄清楚安全性方面的问题。您需要为 docker 注册表设置身份验证。如何设置这些安全配置在注册服务器手册

相关内容