【问题标题】:'docker run' using mount volume option '-v' with single directory as parameter (no source and destination split with colon mark (":"))'docker run' 使用挂载卷选项 '-v' 并带有单个目录作为参数(没有用冒号标记(“:”)分割源和目标)
【发布时间】:2020-09-27 17:16:18
【问题描述】:

在这个页面https://mherman.org/blog/dockerizing-an-angular-app/

在本教程的某个时候,有这个命令来启动容器: $ docker run -v ${PWD}:/app -v /app/node_modules -p 4201:4200 --rm example:dev.

我不明白-v /app/node_modules 部分。当没有用冒号分隔的源和目标时,-v 的目的是什么?

我一直在阅读官方文档:

我没有看到关于docker run -v [some absolute path directory by itself] [container image name] 的示例和解释。

我理解以下行为:

  • docker run -v [the source, an absolute path on the host to map to a destination within the container]:[the destination, an absolute path in the container] [container image name];
  • docker run -v [the source, a docker volume name to map to a destination within the container]:[the destination, an absolute path in the container] [container image name]

但我不明白预期的行为是什么:docker run -v [some absolute path directory by itself] [container image name]

什么是-v [some absolute path directory by itself],比如-v /app/node_modules;主机和容器之间是如何表达的?

【问题讨论】:

  • 我找不到任何参考,但看起来-v /path/on/container 只是在容器中创建了一个目录。你可以试试:docker run --rm -v /test debian:stretch ls / 显示/test 目录。

标签: docker docker-volume docker-run


【解决方案1】:

docker run命令支持大部分Dockerfile命令,其中VOLUME

VOLUME 指令创建一个具有指定名称的挂载点,并将其标记为保存来自本机主机或其他容器的外部挂载卷。

docker run 命令使用基本映像中指定位置存在的任何数据初始化新创建的卷。

通常,这称为anonymous volume

匿名卷没有特定来源,因此当容器被删除时,指示 Docker 引擎守护进程将其删除。

--volume is given a single argument 时,该行为会在容器内创建一个空目录

当绑定挂载的卷的主机目录不存在时,Docker会自动为你在主机上创建该目录。

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2019-12-13
    • 2021-08-25
    相关资源
    最近更新 更多