このページで解説している内容は、以下の 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 apache
index.html
ファイルを準備
PS C:\Users\joeac\Desktop\docker\apache> code index.html
index.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 147MB
apache-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-original2
httpd
は元イメージなので残しておく
まとめ
- Dockerfile +
docker build
を使うと、手順書(Dockerfile)が残るため、再現性とチーム共有に優れている。 - 基本構文
FROM <ベースイメージ>
COPY <ホストのファイル> <イメージ内パス>
RUN <ビルド時に実行するコマンド>
CMD <コンテナ起動時に実行するコマンド>
- イメージ確認 →
docker image ls
- 後から同じイメージを元にいくらでもコンテナを量産できる。
これで、Dockerfile 方式でのイメージ作成の流れが理解できたはずです。次は、コンテナをイメージとして持ち運ぶ方法を学んで、別の環境に配布・移行するシナリオを見ていきましょう。