初心者の質問; RUN
コマンドを使用している場合、Dockerは基本となるオペレーティングシステムのバリエーションをどのように処理しますか?Dockerfile RUNコマンドの互換性クロスOS(apt-get)
たとえば、非常に単純なOfficial 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
を使用してのこのパターンはドッキングウィンドウで流行している場合は、どのように1は、プラットフォーム間、あるいは相互バージョン、依存関係を避けるのですか?
Dockerfileの作成者が私よりも新しいバージョンのgrep
を持っていて、以前のバージョンでは使用できなかった新しいCLIフラグを使用した場合はどうなりますか?
これは、(1)RUNコマンドがゼロ以外の終了コードで終了する(2)コマンドを実行する前にDockerfileによってインストールされているバージョンのgrepが変更されます。
私はDockerfileを使用していますCentOSで画像を作成するDockerファイルの最初の行は 'FROM docker.io/centos:latest'です。これは上記の基本的なCentOSイメージをダウンロードし、私のレイヤー(私の次のRUNコマンド)を上に追加します。 – ItayB