linux - 为什么我无法在Docker容器中进行CD播放?

标签 linux bash docker directory

我想自动在Docker容器内执行任务。应该执行的任务应该在特定的已安装目录中运行。为此,我使用以下命令:

docker run --rm -v /a/dir/on/my/host:/tmp some_container /bin/bash -c "cd /tmp/dir/inside/volume && echo \"$PWD\""

,出于简洁,紧随其后的是实际任务。
PWD应该给我/tmp/dir/inside/volume,但是会打印/a/dir/on/my/host为什么?

最佳答案

在运行容器之前,将扩展$PWD。使用单引号而不是双引号来延迟扩展。同样,使用--workdir-w代替cd .. &&和subshel​​l更简单。

docker run --rm -v /a/dir/on/my/host:/tmp some_container /bin/bash -c 'cd /tmp/dir/inside/volume && echo "$PWD"'

或者我建议:
docker run --rm -v /a/dir/on/my/host:/tmp -w /tmp/dir/inside/volume /some_container pwd

关于linux - 为什么我无法在Docker容器中进行CD播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228100/

相关文章:

linux - 如何删除除最后 2 个目录以及指向这些目录的符号链接(symbolic link)之外的所有目录

c# - 使用 C# 检查 Linux 服务器中的文件是否已通过 .Net Core 更新

bash - 如何阻止 perl 消息 "XXX is deprecated use YYY instead"进入 stderr?

php - 无法启动服务Web : OCI runtime create failed:

c - 使用 AI_NUMERICHOST 获取地址信息

mysql - 杀死 Mysql 中的休眠进程?

bash - 在 Bash 中转写十六进制字符

string - 如何为特定字符串对文本文件进行排序?

python - 在 Dockerfile 中动态拉取核心数

azure - 在azure上运行docker容器