gpt4 book ai didi

bash - 将 shell 或 bash 添加到 docker 镜像(基于 Debian GNU/Linux 的 Distroless)

转载 作者:行者123 更新时间:2023-12-02 18:18:18 33 4
gpt4 key购买 nike

我要加 shellbash到我的图像执行安装命令。

我已复制 /bin/bash在我的 VM 上到我的图像 Dockerfile :

COPY /bin/bash /bin/

但是当我执行 docker 命令时:
 docker run -it --entrypoint "/bin/bash" <my_image>

然后我收到以下错误:

/bin/bash: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory



谢谢你的帮助

最佳答案

那是因为您正在尝试使用动态编译 bashdocker没有 glibc支持。

TL; 博士

  • ...要么使用 bash-static 而不是经典 bash您可以 download它或运行 ./build.sh
  • 或添加 bashalpine : 将此行添加到您的 Dockerfile :RUN apk add --no-cache bash
  • Alpinemusl基于发行版

    许多 docker 镜像都是用 alpine 构建的作为基本图像: alpine (通常)小而快:

    以下是流行操作系统的图像大小。

    The difference in image size
    来源: A Breakdown of Operating Systems of Dockerhub

    The difference in image size is striking: the range goes from BusyBox at 1MB all the way up to Fedora at 230MB. It’s interesting to see the clustering happening. Alpine and BusyBox are lightweight and right near 0MB, then the midweights like Debian and Ubuntu are around 100MB, and largest are heavyweights such as CentOS and Oracle Linux up by 200MB.


    musl不包含 libtinfo
    查看更多关于 glibc 之间的区别和 musl Functional differences from glibc

    附言你可以运行 bash-static即使在来自 scratch 的空容器中
    FROM scratch
    ADD bash
    ENTRYPOINT ['/bash']

    您现在可能可以添加busybox。

    关于bash - 将 shell 或 bash 添加到 docker 镜像(基于 Debian GNU/Linux 的 Distroless),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039877/

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