在撰写文件版本3中挂载Windows主机目录

我试图从版本1升级到版本3的docker-compose.yml。

主要问题

volumes_from: To share a volume between services, define it using the top-level volumes option and reference it from each service that shares it using the service-level volumes option. 

最简单的例子:

版本“1”

 data: image: postgres:latest volumes: - ./pg_hba.conf/:/var/lib/postgresql/data/pg_hba.conf postgres: restart: always image: postgres:latest volumes_from: - data ports: - "5432:5432" 

如果我理解正确,应该转换为

 version: "3" services: db: image: postgres:latest restart: always volumes: - db-data:/var/lib/postgresql/data ports: - "5432:5432" networks: - appn networks: appn: volumes: db-data:? 

问题:现在如何在顶级卷选项我可以设置从Windows主机“db-data” 文件夹 “example_folder”的相对path

在这种情况下,您可能会考虑使用volumes_from

正如Sebastiaan van Stijn(thaJeztah)在这个docker工人1.13的问题中提到的那样:

volumes_from基本上是一种“懒惰”的方式来将卷定义从一个容器复制到另一个容器,所以;

 docker run -d --name one -v myvolume:/foo image-one docker run -d --volumes-from=one image-two 

和跑步一样;

 docker run -d --name one -v myvolume:/foo image-one docker run -d --name two -v myvolume:/foo image-two 

如果您正在部署到AWS,则不应使用绑定挂载,而应使用命名volumes (例如上面的示例);

 version: "3.0" services: db: image: nginx volumes: - uploads-data:/usr/share/nginx/html/uploads/ volumes: uploads-data: 

你可以用docker-compose运行;

 docker-compose up -d Creating network "foo_default" with the default driver Creating volume "foo_uploads-data" with default driver Creating foo_db_1 

基本上,它是不可用的docker组成版本3:

有几个原因volumes_from没有移植到组合文件“3”;

  • 在swarm中,不能保证“ from ”容器在同一个节点上运行。 使用volumes_from不会导致预期的结果。
    bind-mounts尤其如此,在群体中必须存在于主机上(不会自动创build)
  • 还有一个“种族”的情况(如前所述)
  • “数据”容器必须正确使用卷的正确path作为使用卷的“应用程序”容器(即如果“应用程序”使用/some/path/in/container ,那么数据容器也具有将卷放在/some/path/in/container )。 在很多情况下,卷可能会被多个服务共享,并且可能会消耗不同path的卷。

而且,如问题19990所述 :

您所描述的“常规”卷是一个绑定挂载, 而不是 ; 您从主机指定path,并将其安装在容器中。 没有数据从容器复制到该path,因为使用了来自主机的文件。

对于卷,您要求docker创build一个卷(持久性存储)来存储数据,并将容器中的数据复制到该卷。

卷由docker(或通过插件)pipe理,存储path(或机制)是一个实现细节,因为你所要求的只是一个存储,这是pipe理的。

对于你的问题,你将需要定义一个docker容器容器,并复制你的主机内容:

 services: data: image: "nginx:alpine" volumes: - ./pg_hba.conf/:/var/lib/postgresql/data/pg_hba.conf