在撰写文件版本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