Docker compose 使用docker compose装载卷

Docker compose 使用docker compose装载卷,docker-compose,docker-volume,Docker Compose,Docker Volume,我正在研究如何使用docker compose装载卷以实现数据持久性,但我很难理解我阅读的所有示例 这在底部定义了一个名为mysql的卷,它在中引用了这个卷 - mysql:/var/lib/mysql mysql映像如何知道在这个名为mysql的卷中的外观?它只是为了查看所有存储数据或其他内容的卷而设计的吗 然后在其他示例中,我看到以下内容: services: nginx: image: nginx depends_on: - ghost volu

我正在研究如何使用docker compose装载卷以实现数据持久性,但我很难理解我阅读的所有示例

这在底部定义了一个名为mysql的卷,它在中引用了这个卷

- mysql:/var/lib/mysql
mysql映像如何知道在这个名为mysql的卷中的外观?它只是为了查看所有存储数据或其他内容的卷而设计的吗

然后在其他示例中,我看到以下内容:

services:

 nginx:

   image: nginx

   depends_on:

     - ghost

   volumes:

     - ./default.conf:/etc/nginx/conf.d/default.conf

   ports:

     - "80:80"    

   networks:

     - proxy

本例不需要定义卷,这是为什么?

您的MySQL数据将存储在命名卷MySQL中,MySQL由以下人员创建:

volumes:
 mysql:
您可以使用
docker volume ls
列出docker卷,“路径”类似于:
/var/lib/docker/volumes/mysql/date
。当您在该文件夹中
cd
时,您将看到与mysql容器中的数据相同的数据,路径为:
/var/lib/mysql
。如果在容器中执行,您将看到相同的数据

它如何知道如何使用此路径? 好的,检查一下mysql的性能。这是:

VOLUME /var/lib/mysql
简而言之:mysql的所有数据都存储在容器内的
/var/lib/mysql
中,并装载到主机上命名的docker卷mysql中,其路径类似于
/var/lib/docker/volumes/mysql/data/

下一部分是将
/default.conf
(在主机上,相对路径)装载到
/etc/nginx/conf.d/default.conf
容器中的
路径上

在这种情况下,Nginx和ghost不需要命名卷,因为它们不需要保留特定的数据。创建环境时,将使用Ghost(写博客)添加数据,但数据本身将存储在mysql数据库中。不在幽灵容器中

备注(如果您的第二个示例与mysql示例无关):ghost的默认映像与同一容器中的sqlite3 db一起工作(!每个容器都有microservice,因此这可以开发,而不是在生产中)。但是,如果要使用此设置,则需要为sqlite创建一个命名卷,该卷与ghost位于同一容器中。看一看鬼魂。 如果您想使用mysql,您可能需要将一个配置文件装载到您的ghost容器中,以告知容器:使用mysql,您将不需要ghost的命名docker卷,因为数据不会存储在ghost容器中,而是存储在mysql容器中。 要保持上一个示例的持久性而不使用mysql和命名卷,您必须为sqlite db添加一个卷,该卷位于此路径的ghost容器内:
/var/lib/ghost/content
。再次检查以查看此路径


解释如何在docker compose中使用mysql设置ghost

您的mysql数据将存储在命名卷mysql中,该卷由以下人员创建:

volumes:
 mysql:
您可以使用
docker volume ls
列出docker卷,“路径”类似于:
/var/lib/docker/volumes/mysql/date
。当您在该文件夹中
cd
时,您将看到与mysql容器中的数据相同的数据,路径为:
/var/lib/mysql
。如果在容器中执行,您将看到相同的数据

它如何知道如何使用此路径? 好的,检查一下mysql的性能。这是:

VOLUME /var/lib/mysql
简而言之:mysql的所有数据都存储在容器内的
/var/lib/mysql
中,并装载到主机上命名的docker卷mysql中,其路径类似于
/var/lib/docker/volumes/mysql/data/

下一部分是将
/default.conf
(在主机上,相对路径)装载到
/etc/nginx/conf.d/default.conf
容器中的
路径上

在这种情况下,Nginx和ghost不需要命名卷,因为它们不需要保留特定的数据。创建环境时,将使用Ghost(写博客)添加数据,但数据本身将存储在mysql数据库中。不在幽灵容器中

备注(如果您的第二个示例与mysql示例无关):ghost的默认映像与同一容器中的sqlite3 db一起工作(!每个容器都有microservice,因此这可以开发,而不是在生产中)。但是,如果要使用此设置,则需要为sqlite创建一个命名卷,该卷与ghost位于同一容器中。看一看鬼魂。 如果您想使用mysql,您可能需要将一个配置文件装载到您的ghost容器中,以告知容器:使用mysql,您将不需要ghost的命名docker卷,因为数据不会存储在ghost容器中,而是存储在mysql容器中。 要保持上一个示例的持久性而不使用mysql和命名卷,您必须为sqlite db添加一个卷,该卷位于此路径的ghost容器内:
/var/lib/ghost/content
。再次检查以查看此路径

解释如何在docker compose中使用mysql设置ghost