Open4

Docker学習メモ

RomuRomu

Dockerとは

Dockerとは、コンテナ型の仮想化プラットフォーム。
WindowsやMacなどのホストマシン上に「コンテナ」と呼ばれる仮想環境を構築し、そのコンテナ内でアプリケーションやミドルウェア、OSなどを動かすことができる。

従来の仮想化技術であるハイパーバイザ型と違い、ゲストOSが不要という特徴がある。
コンテナは非常に軽量なため、起動や停止などの操作が早いというメリットがある。

また、Dockerでは「不変的なインフラ」という考え方が基本にあり、インフラに対して変更をしたい場合でも、すでに稼働しているインフラに直接手を加えるのではなく、変更したバージョンのインフラにで新たに置き換える。
具体的には「Dockerイメージを作り直して、コンテナを起動し直す」という操作。

現在は開発時に利用したり、AWS等のクラウド上にデプロイして本番利用することも一般的となっている。

RomuRomu

Dockerの仕組み

Dockerエンジン
Dockerそのもの。
インストールしたホストマシン上でDockerエンジンが動き、その上で各コンテナが動くイメージ。

Dockerコンテナ
Dockerエンジンの上で働いている仮想環境のこと。
コンテナはホストOSのカーネル(Linuxカーネル)を利用して動いている。
コンテナごとにOSが独立して動くのではなく、ホストOSのカーネルを各コンテナが共有することで、リソースを節約しながら動いている。
WindowsやMacでDockerを利用する場合は裏でLinux仮想マシンが起動するようになっている。

Dockerイメージ
Dockerコンテナを作るためのイメージのこと。
イメージは元になるイメージに「レイヤ」と呼ばれるイメージを重ねることで新たなイメージを作ることができる。
元となるイメージを「ベースイメージ」といい、ベースイメージにはDockerHubなどがある。
このベースイメージに対する変更を「レイヤ」という。

Dockerレジストリ
Dockerイメージを保管しているところのこと。
DockerHubはDockerレジストリによって作られたコンテナ共有サービス。

RomuRomu

Dockerのメリット

・Dockerイメージがあれば、簡単に環境構築できる。
・Dockerfileを使えば、環境構築手順をファイルにまとめられる。
・Dockerコンテナは、Linuxカーネルを共有して使うので軽くて速い。
・Dockerコンテナは、「作って壊す」が基本なので必ず同じ環境を作れる。

RomuRomu

Linuxについて

「Linux」には2つの意味がある。
・Linuxカーネル
 OSに必要な基本機能を集めた核(コア)となるソフトウェアのこと。
・Linuxカーネルを使ったOS
 Linuxカーネルを使ったOSのこと。「Ubuntu」や「CentOS」など。

カーネルの機能をユーザが使う際には「シェル(shell)」と呼ばれるソフトウェアが必要。
シェルには「sh」、「bash」、「zsh」などがある。

Linuxの特徴
・CUI操作が基本。CUIとは、キーボードで入力された文字だけで操作するインターフェース。
・OSS(オープンソースソフトウェア)。ソースコードを無償で公開している。