このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】Dockerfileでイメージを作る

Dockerfileでイメージを作る
これまで学んできたとおり、コンテナを直接書き出す(docker commit)という方法でイメージを作ることも可能です。しかし、より再現性が高く、チーム内で共有しやすい方法がDockerfileを使ったビルドです。ここでは、Dockerfileを記述してオリジナルのイメージを作成する流れを、Apacheコンテナを例にして詳しく解説します。

1.やることの流れ
- Dockerfileを作成(元となるイメージ
httpd、上書きするファイルindex.html) - ビルド(docker build) してオリジナルイメージを生成
- 確認(docker image ls など)
- オリジナルイメージからコンテナを起動し、index.html が初期ページになるか確認
2. 作成するイメージの情報
| 項目 | 値 |
|---|---|
| 元になるイメージ | httpd |
| 書き出すイメージ名 | apache-original2 |
| Dockerfileを置く作業ディレクトリ | C:\Users\ユーザー名\Desktop\Docker\apache |
3.Dockerfile でイメージを作る流れ
- FROM: どのイメージをベースにするか(ここでは
httpd) - COPY: 追加・上書きしたいファイルをイメージに含める。
docker build -t <イメージ名> .→ ビルドして新しいイメージを作成docker runで起動して動作確認
4.手順詳細
STEP1:作業ディレクトリに移動&準備
作業ディレクトリに移動して、「apache」ディレクトリを作成し、そのディレクトリに移動します。
フォルダ作成
PS C:\Users\joeac> cd C:\Users\joeac\Desktop\docker
PS C:\Users\joeac\Desktop\docker> mkdir apache
PS C:\Users\joeac\Desktop\docker> cd apacheindex.htmlファイルを準備
PS C:\Users\joeac\Desktop\docker\apache> code index.htmlindex.htmlファイルの中身
<html>
<meta charset="utf-8"/>
<body>
<div>演習で学ぶDocker基礎</div>
</body>
</html>文字コードを UTF-8 にして保存します。
STEP2:Dockerfile を作成
テキストエディタで Dockerfile を作り、以下のように記述します。
FROM httpd
COPY index.html /usr/local/apache2/htdocs/ポイント
FROM httpd→httpdイメージをベースにするCOPY index.html /usr/local/apache2/htdocs/→index.htmlを Apache のドキュメントルートに上書き
STEP3:docker build でイメージ化
次のコマンドを実行して、オリジナルのイメージファイルを作成します。コマンドの後ろに「.」があるので、注意してください。これはカレントディレクトリを意味しています。
docker build -t apache-original2 .-t apache-original2: イメージ名をapache-original2として指定.: カレントディレクトリ(Dockerfile があるフォルダ)をビルドコンテキストとして指定
実行結果
PS C:\Users\joeac\Desktop\docker\apache> docker build -t apache-original2 .
[+] Building 0.2s (7/7) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 91B 0.0s
=> [internal] load metadata for docker.io/library/httpd:latest 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 134B 0.0s
=> [1/2] FROM docker.io/library/httpd:latest 0.1s
=> [2/2] COPY index.html /usr/local/apache2/htdocs/ 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:e4311a9bcee9175c68468916bfdfd35a3de 0.0s
=> => naming to docker.io/library/apache-original2 0.0s
...(以下省略)...実行が成功すると、apache-original2 というイメージが生成される。docker image ls で確認可能。
STEP4:イメージが作成されたことを確認
docker image ls実行結果
REPOSITORY TAG IMAGE ID CREATED SIZE
apache-original2 latest e4311a9bcee9 About a minute ago 147MB
httpd latest 4ce47c750a58 5 months ago 147MBapache-original2 が表示されていれば成功。
STEP5:新しいイメージからコンテナを起動
docker run --name apache-container -d -p 8080:80 apache-original2- コンテナ名:
apache-container - ポート:
8080:80 - イメージ:
apache-original2
ブラウザで http://localhost:8080/ にアクセスすると、初期画面が index.html の内容に置き換わっているはず。

STEP6:後始末
コンテナ削除
docker stop apache-container
docker rm apache-containerイメージ削除
docker image rm apache-original2httpd は元イメージなので残しておく
まとめ
- Dockerfile +
docker buildを使うと、手順書(Dockerfile)が残るため、再現性とチーム共有に優れている。 - 基本構文
FROM <ベースイメージ>
COPY <ホストのファイル> <イメージ内パス>
RUN <ビルド時に実行するコマンド>
CMD <コンテナ起動時に実行するコマンド>- イメージ確認 →
docker image ls - 後から同じイメージを元にいくらでもコンテナを量産できる。
これで、Dockerfile 方式でのイメージ作成の流れが理解できたはずです。次は、コンテナをイメージとして持ち運ぶ方法を学んで、別の環境に配布・移行するシナリオを見ていきましょう。
