gpt4 book ai didi

Docker/Docker-compose 卷文件和共享问题

转载 作者:行者123 更新时间:2023-12-01 09:19:32 25 4
gpt4 key购买 nike

我有几个关于 Docker 卷的问题。我已经在运行 debian stretch 的新主机上安装了 Docker 和 docker-compose。我设法为一个简单的 nginx/php-fpm 项目运行了一个 docker-compose 文件,这两个容器都安装在包含源代码的目录中。我想尝试创建一个将在我的容器之间共享的单个卷,但我遇到了一些问题,而且我对官方文档的理解也无济于事。

所以这是我想要实现的想法:

enter image description here

问题 1:尝试在从主机挂载的目录上从 dockerfile 创建卷

docker-compose.yml :

version: '3'
services:
php:
build:
context: .
dockerfile: php.dockerfile
volumes:
- ./host-project-directory:/project

php.docker 文件:

FROM php:7-fpm
VOLUME project

据我了解,在运行 docker-compose 时,我们应该在主机上创建一个卷,其中包含容器中/project 中的所有文件。容器中的/project 应包含来自主机的 ./host-project-directory 中的所有文件。如果我 ls 容器上/project 的内容,我可以看到来自主机的文件,但是使用 docker volume list,主机上没有创建任何卷,为什么?

问题 2:如何从另一个容器填充和使用此卷?

version: '3'
services:
php:
build:
context: .
dockerfile: php.dockerfile
volumes:
- named-volume:/project
web:
image: nginx
links:
- php
volumes:
- named-volume:/project
volumes:
named-volume:

这应该创建一个名为“named-volume”的卷并将其绑定(bind)到容器 phpweb 上的/project 目录。现在,如何使用 ./host-project-directory 中的内容填充此卷?我试过添加一个 dockerfile,比如

ADD ./host-project-directory /project

但没有任何变化,卷仍然是空的。

如果这是因为我缺乏使用 Docker 的经验,我很抱歉,但我不知道如何让这个简单的东西工作。

感谢您的宝贵时间!

最佳答案

对于第一个问题,我尝试了一个像这样的简单 docker 文件:

FROM php:7-fpm
COPY ./project /project

像这样的 docker-compose:

version: '3'
services:
php:
build: .
volumes:
- named-volume:/project
web:
image: nginx
links:
- php
volumes:
- named-volume:/project
volumes:
named-volume:

由于您在 docker-compose 上创建卷,因此不需要在 Dockerfile 中创建它。运行 docker volume list,我能够看到使用本地驱动程序创建的卷。在文件夹中制作 ls 我也能够看到该文件。重要的是要注意,本地目录中的文件与容器中的文件不同。因此,如果您编辑主机中的文件,这不会更改容器中的文件。那是因为您在另一个路径中创建了卷,可能位于:/var/lib/docker/volumes/...发生这种情况是因为您将卷映射到路径,但没有指定您想要卷的位置。为此,只需像这样制作您的 docker-compose:

version: '3'
services:
php:
build: .
volumes:
- ./project:/project
web:
image: nginx
links:
- php
volumes:
- ./project:/project

这样做我仍然可以使用 volume list 命令看到卷,但没有名称。所以我不知道为什么您看不到列表中的卷。

对于问题2:

在执行上面的示例时,我的本地“项目”文件夹中存在容器内的文件。

请检查本地文件夹路径是否正确。

关于Docker/Docker-compose 卷文件和共享问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54095015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com