こんにちは、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]
を先頭に記載します。続いて、コンテナに対して実行したい命令を記述する流れになります。
代表的に利用するFROM
、COPY
、RUN
コマンドを用いたひな型コードを上記に示しました。上記以外で追加でカスタマイズを加えたい場合、次のようなコマンドを用いると良いでしょう。
代表的なDockerfileコマンド一覧
コマンド | 概要 |
---|---|
FROM | DockerHubで公開中の元イメージを指定 |
LABEL | 作成者情報・バージョンを指定 |
COPY | イメージにファイルを追加 |
ADD | イメージにファイルを追加。圧縮ファイル指定時は圧縮まで実行される。 |
RUN | イメージをBuildする際に実行するコマンド |
CMD | コンテナ起動の際に実行するコマンド |
ENTRYPOINT | イメージ実行時に強要するコマンド |
USER | RUN、CMD、ENTRYPOINTで指定のコマンドを実行するユーザー |
WORKDIR | RUN、CMD、 ENTRYPOINT、ADD、COPYの際の作業ディレクトリ |
ENV | 環境変数を設定 |
ONBUILD | Build完了時に実行するコマンド |
EXPOSE | イメージ利用者にポートを解放 |
VOLUME | イメージ利用者に永続データが保存される場所を解放 |
ARG | docker build時に指定する引数 |
【実践】Dockerfileからイメージを作成する手順
実際にDockerfileを用いてイメージを作成する手順について、解説します。
- dockerfileを作成・コンテナに含める素材準備
- dockerfileを編集
- dockefileをBuildしイメージを作成
- イメージを確認
- コンテナの起動確認
- 【参考】コンテナ・イメージの削除
dockerfileを作成・コンテナに含める素材準備
dockerfile
Vim等のエディタを用いてdockerfile
という名称のファイルを作成しましょう。
Windowsの場合は一度dockerfile.txt
というテキストファイルを作成し、拡張子(.txt
)を削除するという流れでdockerfile
を作成することもできます。
コンテナ素材
さらに、今回はコンテナに含めるファイルとして、HTMLファイルindex.html
をdockerfile
と同じディレクトリに格納することとします。
尚、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・Kubernetesの学習におすすめ入門本・動画教材7選|マイクロサービス基盤「コンテナ」の理解促進
次世代のアプリケーションアーキテクチャとして注目度の高いマイクロサービスの基盤であるコンテナ技術Dockerおよびコンテナオーケストレーション技術のKubernetesについて詳しく学びたい方向けに、厳選したおすすめ教材を紹介します。
Docker関連記事一覧
当サイトではDockerに関する記事を多数投稿しています。是非ご覧ください。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら