【Docker】Dockerfileとは|書き方・コマンド一覧・イメージ作成手順を徹底解説

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Dockerfileとは何?
  • Dockerfileのコマンドってどうやって記述するの?
  • Dockerfileからイメージをどうやって作成するの?
目次

Dockerfileとは?

Dockerfileとは、Dockerイメージを作成するためのファイルです。

Dockerfileには、元となるイメージ情報や、実行したいコマンド、コンテナに含めたいファイル情報等を記載します。

Dockerfileをbuildするだけで容易にイメージ作成できるのが特徴と言えます。

Dockerfileを利用するメリット

イメージ作成を目的として利用するDockerfileですが、利用するメリットとは何でしょうか?

具体的に以下がメリットとして挙げられます。

  • コンテナからイメージ作成に至る一連のプロセスを効率化できる
  • ファイルとして管理できるため、カスタマイズ性やメンテナンス性に優れる
  • Dockerfileを開発者同士で共有することで、同じ開発環境を容易に構築できる

Dockerfileの書き方・利用する代表的コマンド

Dockerfileの編集には、テキストエディタ等を利用します。Dockerfileには次のような内容が記述されます。

Dockerfileひな型コード

FROM <IMAGE NAME>[:TAG]

COPY <SOURCE PATH>... <TARGET PATH>

RUN <COMMAND>

DockerFileは、FROMに元となるイメージ名<IMAGE NAME>と任意でバージョン[:TAG]を先頭に記載します。続いて、コンテナに対して行いたい命令を記述していく流れになります。

代表的に利用するFROMCOPYRUNコマンドを用いたひな型コードを上記に示しました。上記以外で追加でカスタマイズを加えたい場合、次のようなコマンドを追加すると良いでしょう。

代表的なDockerfileコマンド一覧

コマンド概要
FROMDockerHubで公開中の元イメージを指定
LABEL作成者情報・バージョンを指定
COPYイメージにファイルを追加
ADDイメージにファイルを追加。圧縮ファイル指定時は圧縮まで実行される。
RUNイメージをBuildする際に実行するコマンド
CMDコンテナ起動の際に実行するコマンド
ENTRYPOINTイメージ実行時に強要するコマンド
USERRUN、CMD、ENTRYPOINTで指定のコマンドを実行するユーザー
WORKDIRRUN、CMD、 ENTRYPOINT、ADD、COPYの際の作業ディレクトリ
ENV環境変数を設定
ONBUILDBuild完了時に実行するコマンド
EXPOSEイメージ利用者にポートを解放
VOLUMEイメージ利用者に永続データが保存される場所を解放
ARGdocker build時に指定する引数

【実践】Dockerfileからイメージを作成する手順

実際にDockerfileを用いてイメージを作成する手順について、解説します。

  1. dockerfileを作成・コンテナに含める素材準備
  2. dockerfileを編集
  3. dockefileをBuildしイメージを作成
  4. イメージを確認
  5. コンテナの起動確認
  6. 【参考】コンテナ・イメージの削除

dockerfileを作成・コンテナに含める素材準備

dockerfile

Vim等のエディタを用いてdockerfileという名称のファイルを作成しましょう。

Windowsの場合は一度dockerfile.txtというテキストファイルを作成し、拡張子(.txt)を削除するという流れでdockerfileを作成することもできます。

コンテナ素材

さらに、今回はコンテナに含めるファイルとして、HTMLファイルindex.htmldockerfileと同じディレクトリに格納することとします。

尚、index.htmlには簡単なHTMLコードを任意で記載しておきます。

<html>
    <body>
        <h1>Hello World</h1>
    </body>
</html>

dockerfileの編集

dockerfileを編集します。今回は例としてApacheイメージ(httpd)を作成します。dockerfileに対して、以下を記述してみましょう。

FROM httpd

COPY index.html /usr/local/apache2/htdocs/

まず、FROMコマンドをもとにApacheイメージ(httpd)を指定しています。続いて、COPYコマンドをもとに前述で作成したindex.htmlをApacheのドキュメントルートにコピーするようにしています。

dockefileをBuildしイメージを作成

まず、Windowsの場合はコマンドプロンプト、Macの場合はターミナルを開きます。続いて、以下のようにdockerfileをbuildし、イメージを作成します。

docker build -t <イメージ名> <dockerfileが保存されているパス>

例えば、イメージ名にmy_image、dockerfileが保存されているローカルディレクトリとして/Users/Name/Desktop/dockerTest/を指定する場合、次のように記述できます。

docker build -t my_image /Users//Desktop/dockerTest/

ここまでを通じてdockerfileからイメージを作成できました。

イメージを確認

最後にイメージが正常に作成されているか確認します。次のコマンドを実行してみましょう。

イメージの確認

docker images

出力結果に以下が含まれていれば、正常にイメージが作成されています。

REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
my_image           latest    1234ccab1234   7 seconds ago   139MB

コンテナの起動確認

Apacheコンテナを作成・実行し、HTMLファイルが正しく表示されるかまでテストしましょう。コマンドプロンプトまたはターミナル上に次のコマンドを記述しましょう。

docker run --name <コンテナ名> -d -p <ポート番号> <イメージ名>

例えば、コンテナ名apache_container、ポート番号8092:80、イメージ名my_imageとした場合、次のように記述できます。

docker run --name apache_container -d -p 8092:80 my_image

ブラウザに「http://localhost:8092」と入力してみましょう。

上図のように、index.htmlに記載した内容が表示されれば、Apacheコンテナも正しく動作していると言えます。

【参考】コンテナ・イメージの削除

最後に、本記事で作成したコンテナおよびイメージが今後不要な場合は削除しておきましょう。

「コンテナ停止→コンテナ削除→イメージ削除」の順番でコマンドを実行すると良いです。

docker stop <CONTAINER ID>
docker container rm <CONTAINER ID>
docker image rm <IMAGE ID>

【参考】Docker関連記事・おすすめ学習法

【厳選】Dockerの学習におすすめの教材

Dockerについて詳しく学習したいという方向けにおすすめの教材をご紹介します。厳選した教材をこちらにまとめていますため併せてご覧下さい。

Docker関連記事一覧

当サイトではDockerに関する記事を多数投稿しています。是非ご覧ください。

【Docker】記事タイトル
Dockerとは|仮想化技術との違い・基本的仕組み・できること
Dockerイメージ・コンテナの仕組みと違い
イメージの取得・一覧表示・削除
コンテナの実行・一覧表示・停止・削除
Dockerfileとは|書き方・コマンド一覧・イメージ作成手順
イメージ作成・DockerHubへの公開手順
マウント方法|ボリューム・バインド・tmpfsマウント
Docker Compose|概要・使い方・YAMLファイルの記述方法
【実践】Docker Composeを用いてWordpress構築

最後に

この記事が気に入ったら
フォローしてね!

目次