【问题标题】:Docker volume - windows host and linux containerDocker 卷 - windows 主机和 linux 容器
【发布时间】:2022-01-27 02:54:26
【问题描述】:

我有这个非常简单的 Dockerfile:

FROM node:current-alpine3.14 AS baseImage
WORKDIR /app
COPY package* .
RUN npm install
COPY . .
CMD ["npm", "run", "watch"]

然后我运行: docker build . -t myImage

然后docker run -p 8080:3000 -v /c/myFolder:/app myImage

所以基本上我希望在容器中的 app 文件夹和我主机上的 C:\myFolder 之间“共享”。

但它不起作用: 例如,如果我更新 C:\myFolder\index.js,则容器中不会发生更改。

这是 docker inspect myContainer 在 Mounts 部分下返回的内容。 是否与转义/路径格式有关?还是我在处理 volume 时缺少一些基本的东西?还是 WORKDIR ?

坐骑: Mounts 似乎认为 "Program Files/Git/app" 是目标/容器文件夹,但它应该只是 "/app"

绑定:

【问题讨论】:

  • 在 Windows 中一切皆有可能:(。您的 docker run 语句似乎很好。至少容器启动并且应用程序正在运行?只是尝试,进入容器(docker exec ...)和在 index.js 中执行一些更改,如果您的应用检测到,请与我们分享
  • 谢谢@JRichardsz。是的,容器启动并且工作正常。我使用的是 Alpine 映像,因此没有可用的 bash ... Mounts 似乎认为“Program Files/Git/app”是目标/容器文件夹,但它应该只是“/app”
  • 你是对的@rzlvmp。这是一个错字。我已经编辑过了
  • 在 alpine 中,您可以使用 sh 代替 bash。然后在里面,用apk add nano 安装nano。这样,编辑 index.js 并在检测到更改时与我们分享
  • Docker 的设计目标是镜像包含应用程序的不可变副本,并且它与主机上可能存在或不存在的应用程序的任何副本是分开的。您可以在没有 Docker 的情况下使用 Node 进行日常开发吗?

标签: windows docker git-bash docker-volume


【解决方案1】:

命令

docker run -p 8080:3000 -v /c/myFolder:/app myImage 使用 gitbash for windows

运行

使用 CMD 运行完全相同的命令解决了我的问题

看起来 GitBash 正在将 /app 目标文件夹转换为 \Program Files\Git\app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2022-10-06
    • 2016-07-27
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多