#Dockerとは
「コンテナ技術」を用いた仮想環境
を構築するツール。
Docker社が開発した、オープンソースの人気 No.1ソフトウェア
1つのコンテナとして確立させる為の手間をまとめてるので簡単にコンテナが作れちゃう。
##Dockerの仕組み
- DockerHub に保存してある
- Dockerイメージ (コンテナ作る為のレシピ)を使い
- Dockerコンテナ を作って
-
Dockerエンジン で動かします。
###DockerHub ( レジストリ )
Dockerの為のコンテナ共有サービス。ほぼ GitHub 。
① Dockerのイメージがたくさん転がっているので、そこからPull
してコンテナを作ります。( Pullしたイメージを元にrunコマンドでコンテナを作成 )
② 作ったコンテナで開発や作業をし、それをイメージにcommit
する。
③ コミットしたイメージをDockerHubにPush
する事で自分のリポジトリにアップロード。
④ 開発作業などで違うPCでもイメージを使いたいときに、そのアップロードしたイメージをPull
するだけでOK!
###Dockerイメージ
コンテナの元となるもの、ひな型、パッケージ。
イメージはいくつかのレイヤと呼ばれるファイルを重ねることで出来ています。
もし欲しいイメージが無かった場合はDockerfileを使い自分でイメージを作ることが出来ます。
FROM ubuntu:18.10 #ベースとなるOSの指定
LABEL version="1.0" #Dockerfileのメタ情報(こう言うFileだよと言う情報)
LABEL description="Dockerfileのテスト、Apacheサーバー"
RUN apt-get update
RUN apt-get install -y apache2 #このFileに入るレイヤのインストール
CMD ["apachectl", "-D", "FOREGROUND"] #コマンドで上のRUNを起動させている
コマンド | 実行内容 |
---|---|
FROM | ベース(親)画像を指定します。 |
LABEL | メタデータを提供します。 メンテナ情報を含めるのに良い場所です。 |
ENV | 永続的な環境変数を設定します。 |
RUN | コマンドを実行してイメージレイヤを作成します。 パッケージをコンテナにインストールするために使用されます。 |
COPY | ファイルとディレクトリをコンテナにコピーします。 |
ADD | ファイルとディレクトリをコンテナにコピーします。 ローカルの.tarファイルをアンパックできます。 |
CMD | 実行中のコンテナにコマンドと引数を提供します。 パラメータは上書きできます。 CMDは1つだけです。 |
WORKDIR | あとに続く説明の作業ディレクトリを設定します。 |
ARG | ビルド時にDockerに渡す変数を定義します。 |
ENTRYPOINT | 実行中のコンテナにコマンドと引数を提供します。 引数は存続します。 |
EXPOSE | ポートを公開します。 |
VOLUME | 永続データにアクセスして保存するためのディレクトリマウントポイントを作成します。 |
###Dockerコンテナ
Dockerイメージの情報を元に起動された仮想環境
###Dockerエンジン
Dockerの心臓、ここがあってのDockerであり、Dockerそのものになります。
コンテナやイメージからくるコマンドをホストOSに伝えて動かす為のもの。
3つの要素からなりたっており
• コマンド命令を受け付ける部分
• REST API(ステートレスなデータのやり取り)
• Dockerデーモン(ホストOSとやり取りするところ)
と分かれています。
##まとめ
これだけ簡単に環境設定が出来て軽くて使い勝手が良いなんて三拍子揃ってるなんて素敵!!
デメリットも色々あるようですが、気軽に使えるから便利!!!
##参考
http://docs.docker.jp/v1.12/engine/understanding-docker.html
https://qiita.com/shubatto/items/105f5b90e1cd91ba7c4c
https://blog.codecamp.jp/docker-file-how-to
https://tech-lab.sios.jp/archives/19073
https://knowledge.sakura.ad.jp/13265/
https://www.youtube.com/watch?v=VIzLh4BgKck