在不同docker compose文件中描述的容器之间以及在不同docker计算机中运行的容器之间创建NFS共享

在不同docker compose文件中描述的容器之间以及在不同docker计算机中运行的容器之间创建NFS共享,docker,docker-compose,docker-machine,nfs,Docker,Docker Compose,Docker Machine,Nfs,我的计算机中有以下设置: 一个docker机器为我的项目A的容器设置。我有我的docker compose.yml文件,描述必须构建哪些容器、要装载的卷等,以及每个容器的Dockerfile 另一台docker机器为我的项目B的容器设置,其docker compose.yml和Dockerfiles 现在,我想在项目a中的一个容器(我们称之为容器1)和项目B中的另一个容器(容器2)之间进行NFS共享 我在检查链接,但据我所知,这是针对同一网络中的容器。在这种情况下,我的容器1和容器2不在同一

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

  • 一个
    docker机器
    为我的项目A的容器设置。我有我的
    docker compose.yml
    文件,描述必须构建哪些容器、要装载的卷等,以及每个容器的
    Dockerfile
  • 另一台
    docker机器
    为我的项目B的容器设置,其
    docker compose.yml
    Dockerfile
    s
现在,我想在项目a中的一个容器(我们称之为容器1)和项目B中的另一个容器(容器2)之间进行NFS共享

我在检查链接,但据我所知,这是针对同一网络中的容器。在这种情况下,我的容器1和容器2不在同一个网络中,它们在不同的机器中

在运行
docker machine
或在我的
docker compose.yml
文件中,我没有指定任何网络选项(除了公开我的应用程序使用的端口)


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

使用“docker compose up”命令按名称[projectname]\u 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]\u default的网络,而是查找名为my pre-existing network的网络,并将应用程序的容器连接到该网络


来源:

那么NAT背后有两台不同的vm机器,你是否尝试过使用桥接网络来实现这两种功能?你应该尝试解决这个问题,然后解决NFS问题。我尝试过这样的“外部”选项:在我的项目a
docker compose.yml
文件中,我创建了一个网络
测试
,并添加了我想要添加的容器d网络,在项目B
docker compose.yml
文件中,我使用了外部选项,但Composer抱怨说:
网络测试声明为外部,但找不到。请使用
docker network create frontback``手动创建网络,然后重试。
您能将“docker网络ls”。