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 ステージ | マルチステージのうち、そのステージまでで止める |
--pull | FROM のイメージを毎回新しく取り直す |
--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 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。