カスタムDockerイメージの作成
シンプルなアプリケーション用のカスタムDockerイメージを作成し、正しくタグ付けとバージョン管理を行います。
「カスタムDockerイメージの作成」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
初めてのDockerイメージをビルドする
なぜカスタムイメージをビルドするのでしょうか?カスタムイメージを使うと、特定のアプリ、依存関係、設定を1つのポータブルな単位にまとめられます。これは、環境の一貫性と簡単なデプロイに重要です。
このイメージのビルド方法は、Dockerfileというファイルで定義します。

シンプルなWebアプリ
ここでは、とてもシンプルなPython Flask製Webアプリをコンテナ化します。Webアドレスにアクセスすると、"Hello from Docker!"を返すだけのアプリです。
ディレクトリに次のファイルがあるとします。
app.py:Pythonアプリケーションのコードrequirements.txt:Pythonの依存関係の一覧Dockerfile:イメージをビルドするための命令
Flaskアプリケーションのコード
これは基本的なPython Flaskアプリです。ポート5000で待ち受け、「Hello from Docker!」と応答します。
ローカル環境で(Flaskをインストールした後に)実行すると、動作を確認できます。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello from Docker!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')依存関係の指定
このアプリにはFlaskライブラリが必要です。これをrequirements.txtに記載します。このファイルは、Docker(およびPythonのパッケージマネージャーであるpip)にインストールするものを伝えます。
これにより、アプリの実行に必要なすべてのライブラリがイメージに含まれるようになります。
Flask==2.3.2Dockerfileの構成
Dockerfileは、イメージをビルドするための指示を記述したテキストファイルです。各命令によって1つのレイヤーが作成されます。ここでは次の命令を使用します。
FROM:ベースイメージ(例:Python)を指定します。WORKDIR:コンテナ内の作業ディレクトリを設定します。COPY:ローカルマシンからイメージにファイルをコピーします。RUN:コマンドを実行します(例:依存関係のインストール)。EXPOSE:コンテナが待ち受けるポートをDockerに知らせます。CMD:コンテナの起動時に実行するデフォルトのコマンドを定義します。
Dockerfileを作成する
これがFlaskアプリ用の完全なDockerfileです。このファイルをapp.pyおよびrequirements.txtと同じディレクトリに配置します。
# Use an official Python runtime as a parent image
FROM python:3.9-slim-buster
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY requirements.txt .
COPY app.py .
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 5000 available to the world outside this container
EXPOSE 5000
# Run app.py when the container launches
CMD ["python", "app.py"]`docker build`コマンド
それでは、イメージをビルドしましょう。Dockerfileとアプリのファイルがあるディレクトリでターミナルを開いてください。
-tフラグを使うと、イメージに名前(my-flask-app)とバージョン(1.0)のタグを付けられます。.は、現在のディレクトリをビルドコンテキストとして使用するようDockerに指示します。
docker build -t my-flask-app:1.0 .
新しいイメージを確認する
ビルドが完了したら、ローカルにあるすべてのDockerイメージを一覧表示して、新しいイメージが存在することを確認できます。
出力にタグ1.0が付いたmy-flask-appがあることを確認してください。
docker images
アプリのコンテナを起動する
アプリを実際に動かしてみましょう。docker runを使って、イメージからコンテナを作成し、起動します。
-p 5000:5000は、ホストマシンのポート5000をコンテナ内のポート5000に割り当てます。-dを指定すると、デタッチモード(バックグラウンド)で実行されます。
docker run -d -p 5000:5000 my-flask-app:1.0
ブラウザでhttp://localhost:5000にアクセスすると、「Hello from Docker!」と表示されます。
イメージのタグ付けに関するベストプラクティス
タグは、イメージの異なるバージョンを管理するうえで重要です。一般的には、セマンティックバージョニング(例:1.0.0、2.1.5)とlatestタグを使用します。
docker tagを使うと、1つのイメージに複数のタグを付けられます。
docker tag my-flask-app:1.0 my-flask-app:latest
これにより、同じイメージを異なる名前で参照できるため、デプロイ時の柔軟性が高まります。
確認テスト
次のDockerfileとビルドコマンドについて考えてみましょう。
# Dockerfile content
FROM alpine:latest
WORKDIR /app
COPY . .
CMD ["echo", "Hello"]
docker build -t my-app:v1 .docker build -t my-app:v1 .コマンドについて、次の説明のうち正しいものはどれですか。
まとめ:カスタムイメージ
よくできました。次のことを学びました。
- コンテナ化に向けてシンプルなアプリケーションを準備する。
- 主要な命令(
FROM、WORKDIR、COPY、RUN、EXPOSE、CMD)を使って基本的なDockerfileを作成する。 docker build -tを使ってカスタムDockerイメージをビルドする。docker imagesでイメージを確認する。docker run -pを使ってカスタムイメージからコンテナを実行する。- イメージのタグ付けとバージョン管理の重要性を理解する。
次は、Dockerイメージがレイヤーでどのように構成されているか、またサイズとビルド時間を最適化する方法について詳しく学びます。
よくある質問
「カスタムDockerイメージの作成」レッスンは無料ですか?
はい。「カスタムDockerイメージの作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
「カスタムDockerイメージの作成」で何を学びますか?
シンプルなアプリケーション用のカスタムDockerイメージを作成し、正しくタグ付けとバージョン管理を行います。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「カスタムDockerイメージの作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Dockerfileの理解
- カスタムDockerイメージの作成
- イメージレイヤーと最適化
- マルチステージビルドとイメージの縮小