【问题标题】:Why can "docker-compose run" create files outside the container?为什么“docker-compose run”可以在容器外创建文件?
【发布时间】:2017-01-14 10:20:45
【问题描述】:

我是 Docker 新手,我正在通过官方文档学习 Docker。

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

我看不懂的是下面的命令。

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

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

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

【问题讨论】:

    标签: python django docker docker-compose


    【解决方案1】:

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

    volumes:
      - .:/code
    

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

    查看 Docker 文档中的数据量以清楚地了解情况:

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

    【讨论】:

    • 这是否意味着虽然命令在容器内运行,但由于音量设置,文件将在本地文件系统中创建?
    • 就是这样,文件将在共享的主机目录中创建,在这种情况下。 ,这是您的当前目录。在当前目录 (.) 中所做的任何修改都将反映在容器的 /code 目录中,反之亦然。
    • 你只需要小心,因为容器文件夹如果存在就会被覆盖,如果不存在就会被创建。
    【解决方案2】:

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

    卷: - 。:/代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      相关资源
      最近更新 更多