Dockerは、アプリケーションの実行環境をコンテナとして構築・管理できる便利なツールです。その中でも「docker build」は、Dockerfileをもとにオリジナルのコンテナイメージを作成するための重要なコマンドです。この記事では、Docker初心者の方にもわかりやすく「docker build」の基本的な使い方から、よく使われるオプション、実践的な活用方法までを丁寧に解説します。自分だけのDockerイメージを作れるようになれば、開発・運用の効率は格段にアップしますよ。
docker build
は、Dockerfile をもとに新しい Docker イメージを作成するためのコマンドです。Dockerfileには、ベースとなるイメージやソフトウェアのインストール手順、ファイルのコピー、環境変数の設定など、イメージを構築するための命令が記述されています。
たとえば、以下のようなシンプルなDockerfileがあるとします。
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
CMD ["nginx", "-g", "daemon off;"]
このDockerfileを使って docker build
を実行すると、Ubuntuベースにnginxをインストールしたコンテナイメージが作成されます。
docker build
の基本構文は以下のとおりです。
docker build [オプション] <ビルドコンテキストのパス>
docker build -t my-nginx-image .
-t
オプションは、イメージに名前(タグ)を付けるために使用します。.
は現在のディレクトリがビルドコンテキスト(Dockerfileと関連ファイルがある場所)であることを示しています。docker build
では、さまざまなオプションを使うことで柔軟にイメージを構築できます。ここでは代表的なものをいくつか紹介します。
イメージに名前(タグ)をつけるためのオプションです。
docker build -t myapp:1.0 .
特定のDockerfileを指定してビルドできます。デフォルトは「Dockerfile」ですが、名前を変えている場合はこれを使います。
docker build -f Dockerfile.dev -t dev-image .
キャッシュを使わずに一からビルドする場合に使用します。イメージの更新が確実に反映されます。
docker build --no-cache -t fresh-image .
Dockerfile内で使用するビルド引数を指定できます。たとえば以下のように使います。
Dockerfileの一部:
ARG APP_ENV
ENV APP_ENV=$APP_ENV
ビルド時の指定:
docker build --build-arg APP_ENV=production -t app-env-image .
docker build
を実行すると、以下のような流れで処理が進みます。
.dockerignore
ファイルで除外設定可能)。ビルドしたイメージは以下のコマンドで確認できます。
docker images
表示される内容:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx-image latest 9c0b3bfb4e68 2 minutes ago 133MB
イメージをもとにコンテナを起動するには以下のようにします。
bashコピーする編集するdocker run -d -p 8080:80 my-nginx-image
docker build
を活用するには、Dockerfileの記述にも気をつけるべき点があります。
.dockerignore
で除外RUN
命令をまとめて記述し、レイヤー数を抑えることでイメージがコンパクトになります。RUN apt-get update && \
apt-get install -y curl git && \
rm -rf /var/lib/apt/lists/*
→ ファイルがビルドコンテキストに含まれていない可能性があります。パスを再確認し、.dockerignore
で除外されていないかチェックしましょう。
→ COPYしたファイルやシェルスクリプトに実行権限がない可能性があります。RUN chmod +x
を使って実行権限を付与することで解決できます。
マルチステージビルドを活用すると、ビルド用の不要なファイルを含まないスリムなイメージを作成できます。
# ビルドステージ
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# 実行ステージ
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
これにより、最終的なイメージには実行ファイルのみが含まれ、サイズも非常に小さくなります。
docker build
コマンドは、Dockerでの開発において欠かせない基本中の基本です。
本記事ではその使い方、よく使うオプション、トラブル対応、マルチステージビルドまでを丁寧に解説しました。
はじめは単純なDockerfileと docker build
の使い方から始め、徐々にオプションや高度なテクニックも取り入れていくと、より効率的な開発・運用が可能になります。
これを機に、自分専用のDockerイメージを自由自在に作れるようになりましょう!