【发布时间】:2021-10-17 23:21:09
【问题描述】:
我在 Windows PC 上关注 https://docs.docker.com/get-started/06_bind_mounts/#start-a-dev-mode-container 并被困在这里:
运行以下命令。之后我们会解释发生了什么:
docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
node:12-alpine \
sh -c "yarn install && yarn run dev"
如果您使用的是 PowerShell,请使用以下命令:
docker run -dp 3000:3000 `
-w /app -v "$(pwd):/app" `
node:12-alpine `
sh -c "yarn install && yarn run dev"
在使用命令提示符时,我收到错误(尝试了多种变体,如下所示),而在使用 PowerShell 时,我似乎没有收到错误,但在执行 docker ps 时没有运行任何东西。
请注意,我宁愿使用命令提示符而不是 PowerShell,因为我可以在我的 PC 上将 Linux 命令与 ComandPrompt 一起使用。
在使用带有命令提示符的 Dockers 时,反斜杠有什么意义(以及在 PowerShell 中使用刻度线)?
我后来发现docker run -dp 3000:3000 -w /app -v "%cd%:/app" node:12-alpine sh -c "yarn install && yarn run dev" 可以正常工作(去掉反斜杠,放在一行上,并使用%cd% 而不是$(pwd)),但仍然想知道为什么在示例会导致错误。
使用命令提示符
C:\Users\michael\Documents\Docker\app>docker run -dp 3000:3000 \
docker: invalid reference format.
See 'docker run --help'.
C:\Users\michael\Documents\Docker\app> -w /app -v "$(pwd):/app" \
'-w' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\michael\Documents\Docker\app> node:12-alpine \
The filename, directory name, or volume label syntax is incorrect.
C:\Users\michael\Documents\Docker\app> sh -c "yarn install && yarn run dev"
sh: yarn: command not found
C:\Users\michael\Documents\Docker\app>docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ node:12-alpine \ sh -c "yarn install && yarn run dev"
docker: invalid reference format.
See 'docker run --help'.
C:\Users\michael\Documents\Docker\app>docker run -dp 3000:3000 -w /app -v "$(pwd):/app" node:12-alpine sh -c "yarn install && yarn run dev"
docker: Error response from daemon: create $(pwd): "$(pwd)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
C:\Users\michael\Documents\Docker\app>
使用 PowerShell
PS C:\Users\michael\Documents\Docker> docker run -dp 3000:3000 `
>> -w /app -v "$(pwd):/app" `
>> node:12-alpine `
>> sh -c "yarn install && yarn run dev"
849af42e78d4ab09242fdd6c3d03bcf1b6b58de984c4485a441a2e2c88603767
PS C:\Users\michael\Documents\Docker> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\michael\Documents\Docker>
【问题讨论】:
-
不清楚您所说的“在命令提示符中使用 Linux 命令”是什么意思...但是您需要查看
docker logs以了解容器实际失败的原因(可能是纱线中有问题过程) -
@OneCricketeer,在安装 git 时,安装了允许我使用
ls -l而不是dir的工具。 -
听起来你正在使用“Git Bash”,它不是 CMD。基本上,我认为总体上不推荐使用 WSL2
-
@OneCricketeer 是的,我是。通过它可能会导致问题(不幸的是它不是罪魁祸首)但在看到你的评论之前不记得它叫什么。将签出 WSL2。谢谢
标签: docker powershell command-prompt