1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Docker修行②】設定内容を記述するだけで、簡単に環境作成ができる「Dockerfile」を体験

Posted at
  • 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」が表示されたら完了。

nginx

  • 下記のコマンドをうち、起動環境を終了する。
$ docker stop sample-nginx
# 動作していないか確認する。
$ docker ps

ファイル基本記法

  • Dockerfileの主な記述は、下記のような命令形式で行う。
命令形式 内容
FROM 元イメージの指定
MAINTAINER 管理者
RUN コマンド実行
ADD ローカルのものをDockerへコピー
CMD バックグラウンドプロセス実行
ENTRYPOINT バックグラウンドプロセス実行
WORKDIR 作業ディレクトリ指定
ENV 環境変数の指定
USER ユーザー指定
EXPOSE ポート番号の指定
VOLUME ホストやコンテナからの外部接続ポイント

まとめ

  • 今回はDockerfileの概要や環境作成ということで、「テキスト形式での環境作成」という夢見心地世界を体験しながら、記事を書く。
  • 賢人技術者が口を揃える「シェルやバッチと似ているから理解しやすい」という意見に、身を潜めながら、静かに熱狂。
  • 次回は、「docker-composeを利用した環境作成」を学習することにしよう。

参考サイト

参考テキスト

1
3
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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?