このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:とりあえずDockerfileでイメージをビルドしてみよう!

とりあえずDockerfileでイメージをビルドしてみよう!

 Dockerを学ぶときに「まずは動かしてみる!」のが一番です。ここでは、UbuntuをベースにしたシンプルなイメージをDockerfileからビルドし、実行してみる流れを紹介します。

 最終的には「Hello Ubuntu」と表示するだけの簡単なコンテナを作ります。ですが、この体験を通じてDockerイメージの仕組みが自然と理解できます。

ベースイメージの取得

まずは Docker Hub からベースイメージを取得します。

コマンドの書式

docker image pull <イメージ名>:<タグ>

実行例

docker image pull ubuntu

タグを指定しないと :latest が適用され、最新のUbuntuイメージが取得されます。

出力例

PS C:\Users\joeac> docker image pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
953cdd413371: Pull complete
Digest: sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

取得できたかどうかは以下で確認します。

PS C:\Users\joeac> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    353675e2a41b   12 days ago   117MB

出力に ubuntu latest が表示されればOKです。

Dockerfileの作成

 次に、作業ディレクトリで Dockerfile を作成します。ここにイメージを構築するための手順を書きます。

作業ディレクトリ「desktop/docker」に移動します。

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>

VSCodeでDockerfileを編集します。

「code Dockerfile」と入力します。

PS C:\Users\joeac\Desktop\docker> code Dockerfile

VSCodeが起動します。

実際のDockerfile内容

以下の内容を入力して保存して終了します。

FROM ubuntu
CMD ["echo", "Hello Ubuntu"]
  • FROM: ベースとなるイメージを指定します(ここでは ubuntu)。
  • CMD: コンテナ起動時に実行するコマンドを指定します。

Dockerfileの基本ルール

命令はすべて大文字で書き、後ろにパラメータを指定します。

Dockerfileでよく使う命令

命令説明
FROMベースとなるイメージを指定
RUNコマンドを実行し、新しいレイヤーを追加
CMDコンテナ起動時のデフォルトコマンドを指定
LABELイメージにメタデータ(ラベル)を追加
EXPOSE使用するポートを外部に公開
ENV環境変数を設定
COPYファイルやディレクトリをコピー
ENTRYPOINTコンテナのエントリーポイントを指定
VOLUMEデータ共有のマウントポイントを指定
WORKDIR作業ディレクトリを指定
ARGビルド時に使用する引数を指定

イメージのビルド

Dockerfileができたら、実際にイメージをビルドします。

コマンドの書式

docker image build -t <イメージ名>:<タグ> <Dockerfileのあるディレクトリ>

実行例

docker image build -t ubuntu-echo .

出力例

PS C:\Users\joeac\Desktop\docker> docker image build -t ubuntu-echo .
[+] Building 1.7s (5/5) FINISHED                            docker:desktop-linux
 => [internal] load build definition from Dockerfile                        0.2s
 => => transferring dockerfile: 78B                                         0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest            0.2s
 => [internal] load .dockerignore                                           0.4s
 => => transferring context: 2B                                             0.0s
 => [1/1] FROM docker.io/library/ubuntu:latest@sha256:353675e2a41babd526e2  0.3s
 => => resolve docker.io/library/ubuntu:latest@sha256:353675e2a41babd526e2  0.1s
 => exporting to image                                                      0.3s
 => => exporting layers                                                     0.0s
 => => exporting manifest sha256:c66b6fa5265b21aed58454a8c2574354a103f1b1c  0.1s
 => => exporting config sha256:a28eb0db1b46ced345cc02b988d608b71901c9fda8b  0.0s
 => => exporting attestation manifest sha256:d8661b74da7d0fdd1bbdb4c64a917  0.1s
 => => exporting manifest list sha256:8f102d5752849275aaee8303f5c60e76717e  0.0s
 => => naming to docker.io/library/ubuntu-echo:latest                       0.0s
 => => unpacking to docker.io/library/ubuntu-echo:latest                    0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/uoi9pqw4ntops2lco8xlji75c
  • -t はイメージに名前をつけるオプションです。
  • . は現在のディレクトリを意味し、そこにDockerfileがあることを示します。

ビルド後に docker image ls を実行すると、ubuntu-echo イメージが追加されています。

コンテナの実行

作成したイメージを使ってコンテナを動かしてみましょう。

実行例

docker container run ubuntu-echo

結果はこうなります。

PS C:\Users\joeac\Desktop\docker> docker container run ubuntu-echo
Hello Ubuntu

「Hello Ubuntu」と表示されます。

 このようにDockerfileから作ったイメージを実際に動かすことで、Dockerの基本的な流れをつかめます。

まとめ

ここまでで学んだ流れは以下の通りです。

  1. ベースイメージを取得(pull)
  2. Dockerfileを作成(FROMとCMDを記述)
  3. docker image build でイメージを生成
  4. docker container run で実行し「Hello Ubuntu」を表示

これが「Dockerfileを使って自分のイメージをビルドする」最初の一歩です。