【发布时间】:2021-02-21 08:51:11
【问题描述】:
我想在 2 个 docker-compose 文件之间共享一个卷。有 2 个相互关联的应用程序,我需要在它们之间创建一个符号链接。 我尝试使用命名卷和外部功能。
在第一个容器上,我可以看到 /var/www/s1 文件夹的内容,但 /var/www/s2 文件夹是空的,而在第二个容器上,我可以看到 /var/ 的内容www/s2 文件夹,但 /var/www/s1 文件夹似乎是空的。由于在 /var/www 中看不到其他应用程序创建的文件夹的内容,因此无法进行符号链接。
我制作了一些虚拟的 docker-compose 文件来尝试以更简单的方式暴露问题。
在 /var/www/s1 中应该有一个“magazine.txt”文件,而在 /var/www/s2 中应该有一个“paper.txt”文件。
第一个 docker-compose 文件如下所示:
services:
nginx:
image: nginx
container_name: nginx
volumes:
- ../:/var/www/s1
- shared-s:/var/www
volumes:
shared-s:
name: shared-s
第二个 docker-compose 文件如下所示:
version: '3.8'
services:
php:
image: php
container_name: php
command: tail -F /var/www/s2/paper.txt
volumes:
- ../:/var/www/s2
- shared-s:/var/www
volumes:
shared-s:
external:
name: shared-s
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80b83a60a0e5 php "docker-php-entrypoi…" 2 seconds ago Up 1 second php
05addf1fc24e nginx "/docker-entrypoint.…" 9 seconds ago Up 8 seconds 80/tcp nginx
8c596d21cf7b portainer/portainer "/portainer" 2 hours ago Up About a minute 9000/tcp, 0.0.0.0:9001->9001/tcp portainer
$ docker exec -it 05addf1fc24e sh
# cd /var/www
# ls
s1 s2
# cd s1
# ls
docker magazine.txt
# cd ..
# cd s2
# ls
# exit
$ docker exec -it 80b83a60a0e5 sh
# cd /var/www
# ls
s1 s2
# cd s1
# ls
# cd ..
# cd s2
# ls
docker paper.txt
# exit
【问题讨论】:
标签: docker docker-compose volumes