- 1年にも満たないエンジニア生活のため、雲の上の存在だと思っていて距離を取っていた「Docker」の習得を目指す記事第二弾。
- 2回目にして「第何弾」という数字が、途方も無い数字になることを悟ってしまった瞬間、何故か喜々に満ち溢れる。
- 今回は、構成内容をテキストで記述するだけで、簡単に環境作成が行える「Dockerfile」「Docker Compose」を学習することにしよう。
- 概要や導入等含めた第一弾はこちら
今回の目的やゴール
- 「Dockerfile」の概要を再度把握する。
- Dockerfileの記述方法を把握する。
- 簡単なDockerfileを作成して実行する。
- 「Docker Compose」の概要を把握する。
- 今回は、「docker-compose」での環境作成は行わない。
Dockerfile
概要
- コンテナーの構成や手順を記述することができるテキスト形式のファイル
- このファイルをビルド(変換)して、自動的に環境を作成することができる。
- コンテナ内で環境構築の作業をする必要がなくなる。
- このファイルを作成しておけば、誰でも簡単に共有して、同じ環境を作成することができる。
特徴
- 複数の作業を一括で行うことができる。
- 一度作成すれば、何回でも使い回せて、同じ環境が作りやすい。
- 構築内容や作成方法を記述しているため、構築手順書としても利用できる。
- ファイルとして実行するため、入力ミスが起こらない。
- テキスト形式のため、管理やメンテナンスがしやすい。
チュートリアルファイル作成
- ターミナル(コマンドプロンプト)を開き、下記のコマンドをうち、作業フォルダの作成と移動を行う。
# 作業フォルダの作成
$ mkdir dockerwork
# 作業フォルダへの移動
$ cd dockerwork
- 下記のコマンドをうち、「dockerfile」フォルダの中に「Dockefile」を作成する。
$ touch Dockerfile
- 「Dockerfile」の中身を、下記のように編集して、保存する。
dockerwork/Dockerfile
FROM ubuntu
MAINTAINER t_o_d
RUN apt-get update
RUN apt-get install -y nginx
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
- 保存後、ターミナル上へ戻り、作業フォルダの位置にいることを確認する。
- 確認後、下記のコマンドをうち、「Dockerfile」をビルド(変換)してイメージを作成する。
# docker build -t イメージ名:タグ名 作業フォルダ
$ docker build -t sample:latest .
--------------
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM ubuntu
--------------
Successfully tagged sample:latest
- 作成後、「Successfully」の文字が出たら、下記のコマンドをうち、イメージができているか確認する。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sample latest XXXXXXXXXX 8 seconds ago 173MB
ubuntu latest XXXXXXXXXX 3 weeks ago 88.9MB
- イメージ確認後、下記のコマンドをうち、作成したコンテナ環境を起動する。
# docker run -d -p ポート番号 --name コンテナ名 イメージ名
$ docker run -d -p 80:80 --name sample-nginx sample
# コンテナIDが表示される。
XXXXXXXXXXXXXXXXXXXXXXX
- 下記のコマンドをうち、コンテナ環境が動作しているか確認する。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXXXXXXXX sample "/usr/sbin/nginx -g …" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp sample-nginx
- 動作確認後、下記のコマンドをうち、nginxサーバーが起動しているか確認する。
$ curl localhost
- htmlが返ってきたら、完了。
- 念のため、ブラウザ上で
localhost:80
にアクセスして、「Welcome to nginx」が表示されたら完了。
- 下記のコマンドをうち、起動環境を終了する。
$ docker stop sample-nginx
# 動作していないか確認する。
$ docker ps
ファイル基本記法
- Dockerfileの主な記述は、下記のような命令形式で行う。
命令形式 | 内容 |
---|---|
FROM | 元イメージの指定 |
MAINTAINER | 管理者 |
RUN | コマンド実行 |
ADD | ローカルのものをDockerへコピー |
CMD | バックグラウンドプロセス実行 |
ENTRYPOINT | バックグラウンドプロセス実行 |
WORKDIR | 作業ディレクトリ指定 |
ENV | 環境変数の指定 |
USER | ユーザー指定 |
EXPOSE | ポート番号の指定 |
VOLUME | ホストやコンテナからの外部接続ポイント |
まとめ
- 今回はDockerfileの概要や環境作成ということで、「テキスト形式での環境作成」という夢見心地世界を体験しながら、記事を書く。
- 賢人技術者が口を揃える「シェルやバッチと似ているから理解しやすい」という意見に、身を潜めながら、静かに熱狂。
- 次回は、「docker-composeを利用した環境作成」を学習することにしよう。
参考サイト
-
https://www.atmarkit.co.jp/ait/articles/1407/08/news031.html
→こちらの記事を参考にしました。大変お世話になりました。 -
https://paiza.hatenablog.com/entry/docker_intro
→こちらの記事を参考にしました。大変お世話になりました。
参考テキスト
-
Docker実戦活用ガイド
→こちらのテキストで学習しました。大変お世話になりました。