Dockerfileの書き方を理解して、Dockerfileでnginxを起動させる


Dockerfileとは?

  • ベースになるDockerイメージ
  • Dockerコンテナ内で行った操作(コマンド)
  • 環境変数などの設定
  • Dokcerコンテナ内で動作させておくデーモン実行

などのDocker上で動作させるコンテナの構成情報を記述するためのファイルのことです。

Dockerfileの基本構文

Dockerfileの基本書式

命令 引数

Dockerfileの命令

命令 説明
FROM ベースイメージの指定
RUN コマンド実行
CMD コンテナの実行コマンド
LABEL ラベルを設定
EXPOSE ポートのエクスポート
ENV 環境変数
ADD ファイル/ディレクトリの追加
COPY ファイルのコピー
ENTRYPOINT コンテナの実行コマンド
VOLUME ボリュームのマウント
USER ユーザーの指定
WOEKDIR 作業ディレクトリ
ARG Dockerfile内の変数
ONBUILD ビルド実行後に実行される命令
STOPSSIGNAL システムコールシグナルの設定
HEALTHCHECK コンテナのヘルスチェック
SHELL デフォルトシェルの設定

Dockerfileの作業の流れ

Dockerfileを作成

Dockerfileでは、DockerコンテナをどのDockerイメージから生成するかを必ず書く必要があります。
bash
FROM [イメージ名]
FROM [イメージ名]:[タグ名]
FROM [イメージ名]@[ダイジェスト]

FROM命令は必須です。ダイジェストは、DockerHubにアップロードすると自動で付与される識別子で、ユニーク。

Dockerfileのビルド

docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]

ビルドをして、イメージを作成。
初回実行時は、Dockerレポジトリからベースイメージをダウンロードするため処理に時間がかかる
2回目以降は、すでにイメージがあるため、ダウンロードはしない。

Dockerイメージのレイヤー構造理解して、nginx起動させる

Dockerfile
# STEP1 Ubuntu
FROM ubuntu:latest
# STEP2 Nginxのインストール
RUN apt-get update && apt-get install -y -q nginx
# STEP3 ファイルのコピー
COPY index.html /usr/share/nginx/html/
# STEP4 Nginxの起動
CMD ["nginx","-g","deamon off;"] 

この例のDockerfileと同じディレクトリに任意の「index.html」という名前のファイルを用意する。
このファイルをbuildすると、命令1行ごとにイメージを生成される。
生成された4つのイメージから共有イメージが作成される。

参考

プログラマのためのDocker教科書