docker build / history の使い方

イメージを作る

書き方

docker build -t 名前:タグ ディレクトリ
docker build -f ファイル --build-arg KEY=値 --no-cache --target ステージ .
docker history イメージ

Dockerfile の命令を上から実行してイメージを作ります。最後の . はビルドコンテキスト(COPY できるファイルの場所)。前と同じ命令はキャッシュ(CACHED)を使います。

よく使うオプション

オプション意味
-t 名前:タグできたイメージに名前をつける(複数書ける)
-f ファイルDockerfile 以外の名前・場所のファイルを使う
--build-arg KEY=値Dockerfile の ARG に値を渡す
--no-cacheキャッシュを使わず全部やり直す
--target ステージマルチステージのうち、そのステージまでで止める
--pullFROM のイメージを毎回新しく取り直す
--platform linux/arm64別の CPU 向けに作る

例

$ docker build -t myapp:1.0 .[+] Building 12.4s (9/9) FINISHED
 => [1/4] FROM docker.io/library/node:24-alpine
 => CACHED [2/4] WORKDIR /app
 => [3/4] COPY package*.json ./
 => [4/4] RUN npm ci
 => exporting to image
 => => naming to docker.io/library/myapp:1.0

今いるディレクトリの Dockerfile から、myapp:1.0 という名前のイメージを作ります。最後の . は、COPY できるファイルの場所(ビルドコンテキスト)です。

$ docker build -f docker/Dockerfile.prod -t myapp:prod .

別の名前の Dockerfile を使って作ります。コンテキストは今いるディレクトリのままです。

$ docker build --no-cache -t myapp:1.0 .

キャッシュを使わずに最初から作り直します。古いパッケージが使われ続けるときに使います。

$ docker history myapp:1.0IMAGE          CREATED         CREATED BY                          SIZE
5d1c2b3a4f6e   2 minutes ago   CMD ["node" "app.js"]              0B
<missing>      2 minutes ago   RUN /bin/sh -c npm ci               48.2MB
<missing>      2 minutes ago   COPY package*.json ./               1.1kB

イメージがどの命令で作られ、それぞれの層がどれだけの大きさかを出します。イメージを小さくするときの手がかりになります。

よくある間違い・注意

  • 最後の . を忘れると「requires 1 argument」になります。
  • コンテキストのファイルは全部デーモンに送られます。node_modules や .git は .dockerignore に書いて外します。
  • COPY . . を RUN npm ci より前に書くと、ソースを 1 行変えるたびに npm ci がやり直しになります。package.json だけ先に COPY します。

実際に打って練習する

Docker コースの Lv16「設計図 Dockerfile」で覚えます(第2章 造船所(イメージを作る))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る