1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerfileとは?なぜ必要?主要命令をnginx公式イメージで理解する

1
Last updated at Posted at 2026-06-22

はじめに

こんにちは。株式会社ジールの @yszdh です。

Dockerを学び始めると、必ず登場するのが "Dockerfile" です。
Dockerイメージを作成するために必要なファイルですが、「Dockerfileってそもそも何?」「なぜ必要なの?」といった疑問を持つことが多いと思います。
この記事では、公式のnginxイメージを例にしながら、Dockerfileの役割と主要命令について整理します。

Dockerfileとは

Dockerfileとは、Dockerイメージを作成するための設計書です。
Dockerコンテナは「Dockerイメージ」から作成されます。
そしてDockerイメージは、Dockerfileに書かれた手順をもとに作成されます。

例えば以下のように記述します。

FROM nginx:latest
COPY ./html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

このDockerfileを使うことで、

  • nginxをベースにする
  • ローカルのhtmlファイルをコピーする
  • 80番ポートを公開する
  • nginxを起動する

という環境を再現できます。

なぜDockerfileが必要なのか

1. 環境をコードとして管理できる

Dockerfileがない場合、コンテナを新しく作成するたびに、必要な設定を手動で実施する必要があります。
手作業で構築すると、「手順を忘れる」「人によって差異が出る」「再現性がない」といった問題が発生します。
しかし、Dockerfileを使えば、環境構築手順をコードとして保存ができるため
docker buildだけで同じ環境を再現できます。
つまりDockerfileは、環境構築を自動化し、再現可能にするための仕組み、と言えます。

2. チーム開発で同じ環境を共有できる

DockerfileをGitHubで共有すれば、チーム全員が同じ環境を構築できます。
例えば、OS、ライブラリ、バージョンなどを統一できます。
「自分のPCでは動くが、他の人のPCでは動かない」という問題がなくなるのがメリットです。

3. 自動化しやすい

CI/CDでもDockerfileはよく使われます。
例えばGitHub Actionsで、docker buildを実行すれば、自動で同じDockerイメージを作成できます。

Dockerfileの基本構成

今回は公式のnginxイメージを使ったシンプルな例を見ていきます。

FROM nginx:latest
WORKDIR /usr/share/nginx/html
COPY index.html index.html
EXPOSE 80
RUN apt update && apt install -y curl
ENV env_key env_value
CMD ["nginx", "-g", "daemon off;"]

Dockerfileの主要命令

FROM

ベースとなるDockerイメージを指定します。
ここでは、nginxlatestタグのイメージを利用しています。

WORKDIR

コンテナ内での作業ディレクトリを指定します。
Linuxでいう "cd" のようなものです。
以降の命令は、このディレクトリを基準に実行されます。

COPY

ローカルファイルをコンテナ内へコピーします。
この例では、ローカルの index.html を、作業ディレクトリの index.html へコピーしています。

EXPOSE

コンテナが利用するポートを示します。
ここではnginxが使用する80番ポートを指定しています。

ただし、EXPOSEだけでは外部公開されません。
実際に公開するには、docker run -p 8080:80のようにポートマッピングが必要です。

CMD

コンテナ起動時に実行するコマンドを指定します。
ここではnginxを起動しています。

daemon off; とは?

通常nginxはバックグラウンド起動します。
しかしDockerコンテナでは、メインプロセスが終了するとコンテナも終了してしまいます。
そのため、daemon off;を指定してフォアグラウンド実行しています。

docker run -d との違い

daemon off;docker run -d は別の概念です。

意味
daemon off; nginxがコンテナ内でフォアグラウンド実行される
docker run -d コンテナ自体をターミナルから切り離して実行する

-d はターミナルを占有しないだけで、コンテナ内のプロセスの動作には影響しません。
daemon off; があることで、-d で起動してもコンテナは終了せず動き続けます。

RUN

Dockerイメージ作成時にコマンドを実行します。
主に、パッケージインストール・ライブラリ追加・ビルドなどで利用されます。

ENV

コンテナ内の環境変数を設定します。
設定した環境変数は、コンテナ内のアプリケーションから参照できます。

実際に試してみる

ファイルを準備する

ここでは、ローカルの Documents フォルダ内に my-nginx ディレクトリを作成して進めます。
以下のディレクトリ構成でファイルを作成します。

Documents/
└── my-nginx/
    ├── Dockerfile    # 拡張子なし・先頭大文字
    └── index.html

index.html の内容は以下のとおりです。

<!DOCTYPE html>
<html>
  <body>
    <h1>Hello Docker</h1>
  </body>
</html>

Dockerfileindex.html と同じディレクトリに配置します。

Dockerfileからイメージを作成する

my-nginx ディレクトリへ移動し、以下でイメージを作成できます。
本記事では WSL2 で実行していますが、Mac・Linux・Windows PowerShell でも同様に実行できます。

cd ~/Documents/my-nginx
docker build -t my-nginx .

コンテナを起動する

docker run -p 8080:80 my-nginx

フォアグラウンドで実行されるため、ターミナルがnginxのログ出力に占有されます。
停止するには Ctrl + C を押してください。

ブラウザで以下へアクセスができます。
http://localhost:8080

アクセスすると、「Hello Docker」と表示されます。

image.png

クリーンアップ

Ctrl + C でコンテナを停止した後、以下のコマンドで後片付けができます。

# コンテナの停止・削除
docker stop <コンテナID>
docker rm <コンテナID>

# イメージの削除
docker rmi my-nginx

まとめ

Dockerfileとは、Dockerイメージを作成するための設計書です。
Dockerfileを使うことで、

  • 環境構築をコード化できる
  • 同じ環境を再現できる
  • チーム共有しやすい
  • CI/CDで自動化しやすい

というメリットがあります。

今回紹介した、FROM・WORKDIR・COPY・EXPOSE・RUN・ENV・CMDを理解すると、Dockerfileが読みやすくなります。

参考

本記事を作成するうえで、以下の資料を参考にさせていただきました。


株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。

ご興味がある方は是非下記のリンクをご覧ください:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?