首页 > 解决方案 > docker run 中的卷与。码头工人撰写

问题描述

env:我正在使用 Docker for Mac

在我的 docker-compose 文件中:

   client:
    stdin_open: true
    build:
      dockerfile: Dockerfile.dev
      context: ./client
    volumes:
      - /app/node_modules
      - ./client:/app

这有效并将当前目录中我的mac上的'client'目录映射到容器中的'app'目录。

但是当我尝试通过 docker run 运行相同的

docker run -v ./client:/app -v /app/node_modules --name clientcont clientimage

这给了我错误

docker: Error response from daemon: create ./client: "./client" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed

现在,我同意“/”是导致问题的字符。我也试过'.client'。同样的问题。唯一有效的是给出绝对路径。

如果我只使用client:/app,这会将 docker VM 主机(不是我的 Mac)上的 docker 卷“客户端”映射到容器中的“应用程序”。但这不是要求。

我的疑问是:docker run 和 docker-compose 在如何使用这些卷上不应该有一致性吗?如果一件事在 docker-compose 中有效,它不应该通过 docker run 以同样的方式工作吗?

标签: dockerkubernetesdocker-composecontainersdevops

解决方案


推荐阅读