Dockerfile、Dockerイメージ、再現可能な環境

Dockerfile、Dockerイメージ、再現可能な環境

Dockerの言及バージョン管理と共有に関する一般的なドキュメントとコメントドッカーファイル、誰でも同じ画像を作成できるようにする必要があります。良いようですが、一般的にこのようなコマンドがあります。

RUN apt-get update
pip install..

これにより、実行時に異なるアイテム/バージョン/パッチがインストールされ、デバッグが困難になる可能性があります。

一方、ドッカー画像を共有しても、バージョン管理や2つの画像の違いを正確に確認するなどの利点はありません。

  • 開発と展開の際には、どのようなもの(dockerfileまたはイメージ)を参照として使用する必要がありますか?
  • Dockerfileは正確なアップデートの詳細を提供する必要がありますか?それにもかかわらず、実行時期によって基本画像が異なる場合があります。

答え1

私はDockerfileを共有することを好むと思います。当然、FROMDockerfileのステートメントにバージョンを指定する必要があります。たとえば、Ubuntuのバージョンごとに利用可能なパッケージが異なります。

システムまたは-dev依存関係の場合は、常に最新バージョンをインストールするためにバージョンを不動化できます。

Debian/Ubuntu パッケージ

apt-getたとえば、インストールされたプログラムの場合は、次のようにcurlバージョン番号を取得できます。

apt-cache policy curl | grep -oP 'Installed: \K\S+'

次に、Dockerfileを編集して次のように読みます。

RUN apt-get install curl=7.47.0-1ubuntu2.2

Python

pipPythonバージョンは、インストールされているパッケージのすべてのバージョン番号を抽出し、次のように要件ファイルに保存することによって取得できます。

pip freeze > requirements.txt

次にDockerfileで実行します。

RUN pip install -r requirements.txt

関連情報