为什么“docker-compose run”在容器外创build文件?

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

在一个教程中 ,它解释了如何使用Docker创build一个Django项目。

我不明白的是下面的命令。

docker-compose run web django-admin.py startproject composeexample . 

该文件说,它将在一个容器内创build一个Django项目,这些新创build的文件将在本地文件系统。

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

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

 volumes: - .:/code 

这意味着所有位于/ code目录(在容器中创build项目的目录)中的文件也将位于项目目录下的本地系统中。

看一下Docker文档中的数据卷来清楚地看到事情:

https://docs.docker.com/engine/tutorials/dockervolumes/

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

卷:
        - 。:/ code

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