Dockerfileについて【初心者向けの記事】
Dockerをインストールし、
ネットのサンプルなどを元に
Dockerfileの設定を行い、
ひとまず動く環境はできたものの、
Dockerfileについての理解はできていない、
という方も中にはいることでしょう。(私)
ということで、今回は、
Dockerfileについて、
そもそもどういったものなのか?
など、かみ砕いて説明したいと思います。
Dockerfileとは?
「Dockerイメージを作るための設計図」
であり、
- どの環境をベースにするか
- どんなファイルをコピーするか
- どんなコマンドを実行するか
- どんな設定を行うか
といったことの手順を書いたテキストファイルです。
Dockerイメージとは?
OSのイメージファイル、と同じような感じ、
と思っていたらそうでもないそうです。
Dockerイメージ
アプリケーションを実行するために
必要な全てのものを含む「パッケージ」
Dockerイメージには
これには以下のものが含まれます。
- アプリケーションのコード
- 実行環境(Pythonなどの言語ランタイム)
- 必要なライブラリやツール
- 設定ファイル
- 依存関係
- OSの必要な部分
OSイメージファイルとの主な違い
1.OSイメージは完全なオペレーティングシステムを含みますが、Dockerイメージはアプリケーションの実行に必要な最小限のOSコンポーネントのみを含みます
2.Dockerイメージは「レイヤー」という概念を持っています
- 基本となるレイヤー(例:最小限のLinux環境)
- その上に追加されるレイヤー(Python実行環境、ライブラリなど)
- アプリケーション固有のレイヤー
3.目的が異なる
- OSイメージ:完全なコンピュータシステムを起動するためのもの
- Dockerイメージ:特定のアプリケーションを分離された環境で実行するためのもの
つまり、Dockerイメージは
「アプリケーションとその実行に必要な全ての要素を含む、軽量でポータブルなパッケージ」
と考えるとよいでしょう。
Dockerイメージの種類
Dockerイメージは「Docker Hub」というプラットフォームで提供されており、
「Docker Hub」には2種類の主要なイメージがあります。
「Official Images(公式イメージ)」
Docker社自身が管理・保証しているイメージ。
セキュリティ更新や品質管理が定期的に行われおり、
Python, Node.js, MySQLなど、
メジャーな技術のイメージが提供されている。
dockerfileに、
FROM python:3.10.9
と記載すると、
Docker社が提供する公式イメージで
バージョン3.10.9のPython環境が含まれている
イメージをベースとして使用する
という意味合いになる。
コミュニティイメージ
一般のユーザーや企業が作成・公開しているイメージ。
ユーザー名/イメージ名の形式で参照する。
Discussion