gpt4 book ai didi

docker - Dockerfile RUN 命令跨操作系统兼容性(apt-get)

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

初学者的问题; Docker 在使用 RUN 时如何处理底层操作系统的变化命令?

让我们以一个非常简单的官方 Docker Hub Dockerfile 为例,为 JRE 1.8 .在安装 Java 包时,Dockerfile 使用 apt-get :

RUN apt-get update && apt-get install -y --no-install-recommends ...

对于未受过训练的人来说,这似乎是一个特定于平台的指令,仅适用于基于 Debian 的操作系统(或至少安装了 APT 的操作系统)。

例如,这在 CentOS 安装上究竟如何工作,其中包管理器将是 yum ?或者上帝保佑,像Solaris这样的东西。

如果这种模式使用 RUN fork 任意 shell 命令在 docker 中很普遍,如何避免跨平台,甚至跨版本的依赖?

也就是说,如果 Dockerfile 编写器有更新版本的(比如) grep比我做的,他们使用了一些在早期版本中不可用的新 CLI 标志?

唯一的两个结果可能是:(1) RUN 命令以非零退出代码退出 (2) Dockerfile 在运行命令之前更改了安装的 grep 版本。

最佳答案

所有 Dockerfile 共享的共同点是 FROM陈述。它是文件中的第一行,表示您正在构建的父 Docker 镜像。典型的基本镜像可能是 Ubuntu 的镜像(即: https://hub.docker.com/_/ubuntu/ )。您在问题中分享的代码片段非常适合 Ubuntu 镜像(使用 apt-get),但不适用于 CentOS 镜像。

总而言之,您是在 CentOS 系统中安装 docker,但您正在构建一个 Docker 镜像,其中包含 Ubuntu。

关于docker - Dockerfile RUN 命令跨操作系统兼容性(apt-get),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36445262/

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