【Docker】 Docker ~ 基礎知識編 ~

■ はじめに

なんとなーくやっていて、いまいち自分の身になっていなかった
Docker の再入門してみる。

時間があるなら、以下の動画を流し見してみるといいかも。

https://www.youtube.com/watch?v=5d8O7jm7Q5c&t=586s

 ■ Docker (ドッカー) とは?

 * 軽量仮想化環境を実現できるツール
 * コンテナ型仮想化

■ Hello Docker !(Hello World

https://y-ohgi.com/introduction-docker/1_introduction/hello-docker/

で、「Play With Docker」っていう
Dockerを疑似体験できるサイト(※)を使って、
Hello World的なことを通して、
どれだけ Docker が便利なのかを体験する

※ DockerHubのアカウントが必要

お題

Dockerコマンドを使用して、nginxサーバを構築する

nginxの起動

# 以下の一行だけ(!!?)
 docker run -P nginx

解説:docker run [サービス]

 ... 対象サービスのコンテナを起動する

* docker run nginx => nginx起動
* -P => 設定されているポートを公開

 ■ 仮想マシンとの違い

仮想マシン(左側)、Docker(右側)

+------------------+ 
|    Application   |
+------------------+       +------------------+
|    Middle ware   |       |    Application   |
+------------------+       +------------------+
|     Guest OS     |       |    Middle ware   |
+------------------+       +------------------+
|    Hypervisor    |       |   Docker Engine  | <= ここに違い
+------------------+       +------------------+
|     Host OS      |       |     Host OS      |
+------------------+       +------------------+
|     Hardware     |       |     Hardware     |
+------------------+       +------------------+

 ■ 作業の流れ

+-------+
| Image | <-----------------+
+-------+                   |
      ↓   docker pull       |
+-------+                   |
| Image |                   |
+-------+                   |
      ↓   docker run        |
+-----------+               |
| Container |               |
+-----------+               |
      ↓   docker commit     |
+-------+                   |
| Image | ------------------+
+-------+

■ 用語整理 / キーワード

Image

* オブジェクト指向的には、クラス
* テキストファイル(Dockerfile) からビルド

Container

* オブジェクト指向的には、インスタンス
* Image から作られる動作環境
* 原則、1コンテナ1アプリ

Dockerfile

* Image を自動で作成してくれるファイル
* Dockerfile の サンプルについては、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/04/14/000000
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker Compose

* 複数コンテナをまとめて管理するツール
 => YAMLファイルで複数コンテナを定義
* 詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/04/11/000000
namespace

* プロセス、ファイル構造、ユーザーID、グループIDなどを
 一つのOSの中で分離するLinuxカーネルに実装された技術
 ⇒ コンテナ技術の基礎の一つとなっている

キーワード

 Build once, run anywhere

一度書けばどこでも実行できる 

* Dockerは、「一度書けばどこでも実行できる」を実現

 IaC (Infrastructure as Code)

 * インフラのコード化
 * インフラ構成をコードで管理していくこと

 DevOps(デブオプス)

 * 開発(Development)と運用(Operations)を組み合わせた造語
 * 開発部門と運用部門が協力しあいながら、システムを作りあげていくソフトウェア開発手法

https://geechs-magazine.com/tag/tech/20160325
http://it.impressbm.co.jp/articles/-/12455
http://www.buildinsider.net/enterprise/devops/01

参考文献

初学者用サイト
https://y-ohgi.com/introduction-docker/

関連記事

Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker Desktop / WSL2 ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/12/08/165505
Windows Terminalを使ってWindows上にあるUbuntuでDockerを使えるようにする
https://dk521123.hatenablog.com/entry/2020/12/10/094125
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / docker-compose ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker ~ 基本編 / docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ Data Volume について ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker によるトラブルシューティング
https://dk521123.hatenablog.com/entry/2017/09/24/162257
Windows / Docker Desktop でのトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/12/11/115814