Python “为什么可以?”;“docker compose run”;在容器外创建文件?

Python “为什么可以?”;“docker compose run”;在容器外创建文件?,python,django,docker,docker-compose,Python,Django,Docker,Docker Compose,我是Docker的新手,我正在学习Docker的官方文档 在一个例子中,它解释了如何使用Docker创建Django项目 我不明白的是下面的命令 docker-compose run web django-admin.py startproject composeexample . 文档说它将在一个容器中创建一个Django项目,这些新创建的文件将在本地文件系统中 我的问题是,如果这些新创建的文件是在容器中创建的,为什么它们会在本地系统中?因为在docker-compose.yml中定义了一个

我是Docker的新手,我正在学习Docker的官方文档

在一个例子中,它解释了如何使用Docker创建Django项目

我不明白的是下面的命令

docker-compose run web django-admin.py startproject composeexample .
文档说它将在一个容器中创建一个Django项目,这些新创建的文件将在本地文件系统中


我的问题是,如果这些新创建的文件是在容器中创建的,为什么它们会在本地系统中?

因为在docker-compose.yml中定义了一个卷:

volumes: - .:/code 卷数: -.:/code
冒号前的“点”表示计算机(主机)中相对于Dockerfile和docker-compose.yml的当前目录。/code是容器中的目录

这是因为在您的
docker compose.yml
文件中,您正在创建一个名为web的映像,其中包含一个共享卷,该卷将当前目录(.)映射到所创建容器的/code目录

volumes:
  - .:/code
这意味着/code目录(您在容器中创建项目的目录)中的所有文件也将位于本地系统的项目目录下

请查看Docker文档中的数据卷,以清楚地看到以下内容:


这是否意味着尽管命令在容器内运行,但由于卷设置,文件将在本地文件系统中创建?在这种情况下,文件将在共享的主机目录中创建,这是您当前的目录。在当前目录(.)中所做的任何修改都将反映在容器的/code目录中,反之亦然。您只需小心,因为如果容器文件夹存在,它将始终被覆盖,如果不存在,它将被创建。