运行 具有 Docker 绑定安装的容器导致容器为 return 节点版本并退出

Running a container with a Docker bind-mount causes container to return Node version and exit

我正在尝试在 docker 实例构建后将静态资产目录附加到它。当我做这样的事情时

docker run -it app /bin/bash

容器运行良好。但是,如果我这样做:

docker run -it app -v "${PWD}/assets:/path/to/empty/directory" /bin/bash

这也转载了它:

docker run -it node:12.18-alpine3.12 -v "${PWD}/assets:/path/to/empty/directory" /bin/bash

它吐出我正在使用的 Node v12.18.4 版本并立即死掉。我哪里错了?我在 windows 上使用 docker 和 wsl2 10。是否由于文件系统不兼容?

编辑: 糟糕,它吐出的是节点版本而不是高山版本

为了调试我的问题,我尝试了 运行ning 一个 bare-bones alpine 容器:

docker run -it alpine:3.12 -v "${PWD}/assets:/usr/app"  /bin/sh

其中提供了一条更有用的错误信息:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-v\": executable file not found in $PATH": unknown.

由此我意识到 docker 试图将 运行 -v 作为启动命令。我决定改变顺序,事情开始起作用了。

TL;DR 在执行docker run 命令时,-v 参数及其对应的参数必须放在容器名称之前。即以下作品

docker run -it -v "${PWD}/assets:/usr/app" alpine:3.12 /bin/sh

但这不是:

docker run -it alpine:3.12 -v "${PWD}/assets:/usr/app"  /bin/sh