如何正确设置数据卷容器?

我想设置一个数据卷容器与另一个LAMP容器一起工作,但我开始与Docker一起工作,所以我有一些疑虑。

所以我将运行两个容器,我们将其命名为(仅作为示例):

  • 灯容器
  • 数据容器

我知道一次运行多个容器的唯一方法是使用Docker Compose,但我不知道如何设置compose.yml文件。

让我们说lamp-container有它存储数据的以下目录:

 /data/www # meant to contain web content /data/www/default # root directory for the default vhost /data/logs/ # Nginx, PHP logs /data/tmp/php/ # PHP temp directories 

我想将它们分别映射到/home/<username>/container_files (这是运行docker的主机上的本地目录)下的主机上的本地目录。 例如:

 /data/www => /home/<username>/container_files/data/www /data/www/default => /home/<username>/container_files/data/www/default /data/logs/ => /home/<username>/container_files/data/logs /data/tmp/php/ => /home/<username>/container_files/data/php 

任何一点都可以用compose.yml示例文件指向正确的方向? 我已经阅读文档,但对我来说很困惑,因为我通常使用虚拟机,并在许多方面与容器不同。

注意:我应该补充说,这是一个主机中的一个用户而不是一个主机中的多个用户。 所以每个想要使用这个设置的人都应该有自己的主机下的设置。

数据容器卷在引入命名卷时已被弃用。 命名卷具有数据容器的所有优点,但可以单独pipe理,让您可以更轻松地将卷作为数据进行pipe理,而不是作为伪容器进行pipe理。

下面是docker-compose.yml的一个例子,用于挂载两个命名卷和另一个networking,您可能会删除大部分不适用于您自己的场景的行:

 version: '2' volumes: vol-name-1: driver: local vol-name-2: driver: local networks: internal1: driver: bridge services: service-1: build: . image: my-service:latest volumes: - ./auth:/my-app/auth:ro - ./host-conf:/my-app/conf - vol-name-1:/my-app/data-1 - vol-name-2:/my-app/data-2 networks: - default - internal1 ports: - "8080:80" entrypoint: "my-start.sh" 

在上面的例子中,它还挂载了两个主机卷(绑定挂载),并显示了如何在auth卷上使用:ro挂载一个只读卷。