Dockerfile 入門:基本の書き方とビルド方法を初心者向けに解説


はじめに

Dockerを使い始めると、最初は既存のDockerイメージを取得してコンテナを起動することが多いです。
しかし、実際の開発では「必要なツールを追加したい」「アプリケーションのファイルを含めたい」「チームで同じ環境を再現したい」といった場面が出てきます。
そのようなときに使うのが、Dockerイメージの作成手順をコードとして記述できる<strong>Dockerfile</strong>です。

だけどLinux環境で動かないといったケースも、開発工程からDockerを活用していくことで防ぎやすくなります。そして、開発工数の中で使っていた環境をそのまま本番環境に持っていくことも可能なため、環境差分が少なく、環境による問題を減らすことができます。

この記事では、<strong>Dockerfile 入門</strong>として、Dockerfileの基本的な役割、書き方、イメージのビルド方法、コンテナの起動方法を初心者向けに解説します。
Dockerfileを使うことで、開発環境を手作業で作るのではなく、ファイルに記述した内容から同じ環境を何度でも再現できます。

今回は、NginxのDockerイメージを例にしながら、Dockerfileを書いてイメージをビルドし、コンテナとして起動する流れを確認します。
Dockerfileの基本命令であるFROM、RUN、CMD、COPY、ENTRYPOINT、WORKDIRなどもあわせて紹介するため、これからDockerfileを学びたい方の入門記事として参考にしてください。

Dockerfileの書き方とビルド

先ほどのコマンドで起動したもののイメージの作成部分を書くとこんな感じです。

FROM nginx:1.29.5-alpine-slim

これでイメージを取得することができます。 それでは実行してみましょう。

docker build -t my-app .

これでイメージのビルドができます。 次にコンテナを起動させましょう。 これは先ほどのコマンドと同じです。

docker run --name my-app -p 8080:80 -d my-app

これで前回と同じようにhttp://localhost:8080/にアクセスして同じ画面が出ていたら成功です。

Dockerfileに記述できる命令

命令説明
FROM元となるイメージを指定。
RUNイメージのビルド時に実行するコマンド。
CMDコンテナ起動時に実行するコマンド。
COPYイメージにフォルダやファイルをコピーする。
ENTRYPOINTコンテナの起動時に実行。上書きはできない。
WORKDIR作業ディレクトリを指定する。

CMDとENTRYPOINTの違い

この2つのコマンドは似たようなことを書いています。2つともコンテナ起動時に何のコマンドを実行するかを決めるコマンドです。

違いとしては下記です。

  • ENTRYPOINTはdocker run時にデフォルトコマンドの上書きができない
  • 上書きできるのはCMDで書いた部分のみ

詳しくは専用の記事を見てください。

ADDとCOPYの違い

どちらもファイルやフォルダのコピーができる。

  • ADDはコピー時に圧縮ファイルを解凍する
  • COPYはしない

実際に動かしてみる

では前の記事で作成したhello-worldと同じものを作ってみましょう

FROM alpine:latest
CMD ["echo", "Hello, World"]

それではDockerfileを元にイメージを作成しましょう。

docker build -t hello-world .

最後にコンテナを起動させます。

docker run --name hello hello-world

Dockerfileを使うことの利点

Infrastructure as Code(IaC)

Dockerfileを作成することで、自分の好きなようにDockerイメージを作成することができるようになりました。では、このDockerfileを書くことによってどのような利点があるのでしょうか?

一番の利点は、OSの設定などのインフラ構築部分も含めてコード化できるということです。

これによって、同じ環境をミスを最小限にして作ることができ、またインフラ構築処理も構成管理することが可能になります。

今回は単純なものだけでしたが、ソースコードや環境構築部分で変更が入った際に、容易に本番に近い状態でデプロイ(本番環境に反映すること)ができます。

このような考え方を「Infrastructure as Code(IaC)」と呼びます。

まとめ

今回は、<strong>Dockerfile 入門</strong>として、Dockerfileの基本的な役割と、Dockerイメージを作成してコンテナを起動するまでの流れを解説しました。
Dockerfileを使うと、ベースとなるイメージの指定、コマンドの実行、ファイルのコピー、作業ディレクトリの指定などをコードとして管理できます。

Dockerfileを用意しておけば、手作業で環境を構築する必要が減り、チーム内でも同じ開発環境を再現しやすくなります。
また、作成したDockerfileを共有することで、開発環境と本番環境の差分を小さくでき、環境依存によるトラブルの防止にもつながります。

Dockerfileの基本は、まずFROMでベースイメージを指定し、必要に応じてRUN、COPY、WORKDIR、CMDなどの命令を組み合わせることです。
最初はシンプルなDockerfileから始めて、少しずつアプリケーション用の設定やファイル追加を試していくと理解しやすくなります。
Dockerfileを使いこなせるようになると、Dockerによる開発環境構築やアプリケーションの配布がより効率的になります。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です