gpt4 book ai didi

docker - 使用 docker run 命令获取结果加上没有文件或目录

转载 作者:行者123 更新时间:2023-12-04 19:30:55 25 4
gpt4 key购买 nike

当我对 docker 镜像运行命令时,例如 docker run ubuntu cat /etc/*release*我得到以下结果。为什么我会得到“没有这样的文件或目录”以及结果?我在 CentOS 8 上运行 docker CE 版本 19.03.5。谢谢。

cat: /etc/centos-release: No such file or directory
cat: /etc/centos-release-upstream: No such file or directory
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
cat: /etc/redhat-release: No such file or directory
cat: /etc/system-release: No such file or directory
cat: /etc/system-release-cpe: No such file or directory

最佳答案

运行你运行这样的命令,你的本地 shell 处理它,扩展任何 glob,并生成一个实际执行的单词序列。那是,

  • 你的本地 shell 看到 /etc/*release*并将其替换为主机系统上存在的一组匹配文件;然后
  • 它运行扩展命令 docker run ubuntu cat /etc/centos-release /etc/centos-release-upstream ... .

  • 您需要做两件事才能使此类命令起作用:
  • 单引号命令,这样你的本地 shell 就不会扩展它;和
  • 显式地使 Docker 在容器内运行一个 shell 以在那里进行扩展。

    docker run --rm ubuntu sh -c 'cat /etc/*release*'

  • 您只需要 sh -c如果您正在使用 shell glob、重定向或尝试按顺序运行多个命令,则使用包装器。在 Dockerfile 上下文中,Docker 会自动添加 sh -c为您提供 RUNCMD陈述。

    关于docker - 使用 docker run 命令获取结果加上没有文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470301/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com