【问题标题】:How to check what OS a docker image depends on?如何检查 docker 镜像依赖于什么操作系统?
【发布时间】:2018-02-13 16:30:51
【问题描述】:

我想扩展我的 jenkins 映像以安装 docker,以便它可以从项目中构建 Dockerfile。 我为 docker 找到了一个不错的安装脚本,但仅适用于 Ubuntu 64 位。我需要知道的是,如果我的 jenkins 图像的父图像基于 Ubuntu 64 位,那么我可以毫无问题地使用这个安装脚本。

我已经使用了docker image inspect <imagename>,但它似乎只为以前的图像版本产生哈希值。

【问题讨论】:

    标签: docker docker-container docker-image


    【解决方案1】:

    我认为目前没有任何 docker 命令可以让您这样做。似乎唯一的方法是启动容器并运行这些命令:determine OS distribution of a docker image

    【讨论】:

      【解决方案2】:

      您的 Jenkins 是基于 Ubuntu 64 位或 Fedora 24 或 Debian jessie 构建的这一事实不应该打扰您,因为它应该可以正常工作。

      Run Different Linux OS in Docker Container?

      更多解释

      还有

      Docker container isolation, does it care about underlying Linux OS?

      无论如何,如果你想获取用于构建这个镜像的 Dockerfile 的 FROM 行,

      你可以使用 docker 镜像

      https://hub.docker.com/r/dduvnjak/dockerfile-from-image/

      获取

      FROM UBUNTU

      FROM DEBIAN

      示例来自

      How to check for Certain Properties in Docker Images

      $ docker run -v /var/run/docker.sock:/var/run/docker.sock dduvnjak/dockerfile-from-image k3ck3c/nethogs | grep FROM

      会显示

      FROM alpine:latest

      【讨论】:

        【解决方案3】:

        在 docker 世界中,您或多或少会经常遇到像 Alpine 这样的操作系统。 因此,最好获取/etc/os-release 文件的内容,该文件在大多数情况下都会存在。

        # Tomcat 9 running on Alpine OS
        docker run -it tomcat:9-alpine cat /etc/os-release
        
        # Tomcat 9 running Debian (buster)
        docker run -it tomcat:9 cat /etc/os-release
        

        【讨论】:

          【解决方案4】:
          docker run <image-name> /etc/*release*
          

          它将返回有关您的图像的元数据。

          See example output here

          【讨论】:

          • 我还需要上面的 cat 命令:docker run &lt;image-name&gt; /bin/bash -c "cat /etc/*release"
          • 这对我有用!!!谢谢~
          【解决方案5】:

          以下命令有效docker run mysql cat /etc/os-release

          输出

          PRETTY_NAME="Debian GNU/Linux 10 (buster)"
          NAME="Debian GNU/Linux"
          VERSION_ID="10"
          VERSION="10 (buster)"
          VERSION_CODENAME=buster
          ID=debian
          . . .
          

          【讨论】:

            【解决方案6】:

            解决方法:docker run mysql cat /etc/os-release

            输出:

            PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
            NAME="Debian GNU/Linux"
            VERSION_ID="11"
            VERSION="11 (bullseye)"
            VERSION_CODENAME=bullseye
            ID=debian
            HOME_URL="https://www.debian.org/"
            SUPPORT_URL="https://www.debian.org/support"
            BUG_REPORT_URL="https://bugs.debian.org/"
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-01-13
              • 2020-12-20
              • 1970-01-01
              • 2020-05-27
              • 1970-01-01
              • 2011-10-15
              • 1970-01-01
              • 2017-11-06
              相关资源
              最近更新 更多