現場でDockerを使う現場で作業したことはあるが仕組みが曖昧で、完全に理解したわけではないので参考書を読みつつ、初心に戻り、まとめてみることにしました。
本来のシステムや機能の仕組み
本来、システムや機能は、以下のようにサーバー内にいろんなフレームワークだったり、様々なプログラムやソフトウェアが存在していて、動いています。そして、それらはそれらを動かすための実行環境だったり、他のプログラムを元に動いていたりすることがあるのです。
また、システムやソフトウェアは共通の実行環境だったり、ライブラリを使用していることだって少なくありません。
そして各々のシステムが作動するversionが決まっていることもあり、共通のプログラムがそれに対応していないと、一部のシステムが動かなくなってしまいます。
Dockerは一つのサーバーに複数の実行環境を構築するもの
こういった問題を解決するものとして、Dockerというものがあります。Dockerとは、サーバー内の様々なシステムやプログラムの実行環境をシステム・プログラムごとに作成できるシステムです。
つまり、一つのサーバーに
○Laravelなら、PHPの実行環境
○Nuxtなら、Nodeの実行環境
を構築することができ、システムにあった環境を用意することができます。
そして、その実行環境のことを「コンテナ」と言います。
そして、そのコンテナの種類のことを「イメージ」といい、コンテンはイメージをもとに作成されます。
DockerはLinuxで動く
DockerはLinuxで動くので、Dockerの操作をするとき(Dockerを起動する、Docker内のコンテナを移す、削除するetc...)はLinuxのコマンドで操作したりします。そもそもサーバとは
そもそもサーバって何なのかも合わせて調べてみました。サーバとは英語で書くと、「Server」と書き、Serve(割り当てる、給仕する)という動詞から成り立っている言葉であり、これの名詞型になるとサービス(Service)となります。
つまり、サーバとは何かを提供するものということです。
○「Webサーバ」と言えば、Web関係の機能が格納されたサーバ
○「メールサーバ」と言えば、メール関係の機能が格納されたサーバ
というように。
そして、サーバは大きく分けて、
○総合的なサーバ
○部分的なサーナ
の2つに分けることができます。
Dockerの構造
まずは復習として、Dockerは大体以下のような構造になっています。 もともと使用しているサーバーOSがあり、そのサーバーOSはLinux OSで作動し、さらにその上でDockerがあるのです。
そして、Dockerのコンテナの中には、コンテナごとのそのコンテナ専用のLinux OSが存在しています。
ちなみに、OSとは「Operating System(オペレーティング・システム)」の略で、ユーザの命令をシステムや機械に伝えるものです。
世の中の機械やシステムは単純であり、人間のように思考回路があるわけではないので、人間のしたいことを伝えてもそのままでは、機械は理解できません。
つまり、OSとは、人間の言葉を機械に変換するためのものなのです。
以上、まずはDockerがどんなものかをまとめてみました。