在以不同的docker-compose文件描述并在不同的docker-machines中运行的容器之间创建NFS共享

时间:2018-10-24 08:25:51

标签: docker docker-compose docker-machine nfs

我的计算机中具有以下设置:

  • 为我的项目A的容器设置了一个docker-machine。我有一个docker-compose.yml文件,描述了必须构建的容器,要安装的卷等等,以及{{ 1}}。
  • 另一个Dockerfile设置项目B的容器,分别带有docker-machinedocker-compose.yml

我现在想在项目A中的一个容器(我们称为容器1)和项目B中的另一个容器(容器2)之间进行NFS共享。

我正在检查类似this的链接,但是据我了解,那是针对同一网络中的容器的。在这种情况下,我的容器1和容器2不在同一网络中,并且它们在不同的机器中。

在运行Dockerfiledocker-machine文件中,我没有指定任何联网选项(除了公开我的应用程序使用的端口之外)。

如何在这两个容器之间共享NFS?

1 个答案:

答案 0 :(得分:0)

'docker-compose up'命令通过名称[projectname] _default创建网络,并且docker-compose.yml文件中指定的所有服务都将映射到创建的网络。

例如,假设您的应用程序位于名为myapp的目录中,并且docker-compose.yml如下所示:

 version: "3"
 services:
    web:
      build: .
      ports:
        - "8000:8000"
    db:
      image: postgres
      ports:
         - "8001:5432"

当您运行docker-compose up时,会发生以下情况:

 1) A network called myapp_default is created.
 2) A container is created using web’s configuration. It joins the network myapp_default under the name web.
 3) A container is created using db’s configuration. It joins the network myapp_default under the name db.

并且如果您希望其他服务使用已创建的现有docker网络,则需要使用“外部”选项进行定义

使用预先存在的网络

如果您希望容器加入现有网络,请使用外部选项:

networks:
   default:
     external:
       name: my-pre-existing-network

Compose不会尝试创建一个名为[projectname] _default的网络,而是寻找一个名为my-pre-existing-network的网络并将您的应用程序的容器连接到该网络。

来源:https://docs.docker.com/compose/networking/#use-a-pre-existing-network