Docker入門⓪ -Dockerを理解する前に-

今回からDockerについて記事を書いていこうと思います。目標はまだ決まっていませんが

  • コンテナ解説
  • Docker解説
  • WSLの導入
  • Dockerの実行
  • (できれば)Kubernatesについて

あたりが書ければと思います。最後のKubernatesは僕自身がよく分かっていないので勉強しがてらです。

記事の目的

Dockerって誰向けの技術なの? 何の分野に関する技術なの? を解説します

ということで初回はまずDockerに入る前の話。
そもそもよく聞くこの技術って何を目的にしているの?誰に嬉しいの?というような大前提の話をします。

この辺り、最初の導入として仮想マシンとコンテナの違い云々みたいな記事が多いんですけど、ド素人の僕からすると何が目的なのかさっぱりでした。IT業界に入って、右も左も分からない人に向けてそのギャップを埋めるための記事です。

結論

サーバーの構築をするための技術です。
色々なソフトウェアを入れたり、設定したり、あらゆるサーバー構築における手順をコード化するものです。

解説

皆さん、サーバー構築ってした事ありますか? 私は無いです。
・・・無いというのは、自分でサーバー買ってきて、ネットワーク構築して、ライセンス買って、とかそのあたりのハードウェアを含めては無いということです。(僕がこの世界入った時にはコンテナがもう普及しまっくていたので、ハードウェアからのサーバー構築なんて経験した事無いです。近頃の若いもんは・・・)

では皆さん、パソコン買ってきて使えるようにした事ありますか? 私はあります。
Windowsだとまずなんかのアカウント設定させられて、Wi-Fiに繋げ言われて、OS更新させられて、余計なおすすめ拒否って、のくそダル手順踏んでセットアップしました。んでその後好きなアプリ入れたり邪魔アプリ消したりします。


この手順って、皆さん手動でポチポチ操作しながらやりますよね。
コード動かしたら何もかも自動でやってくれたら楽だと思いませんか?しかも手順間違いも無いと思いませんか?


もう少しIT寄りなケースを書きます。Linuxはご存じですか?まあフリーのOSです(手抜き説明)
このLinuxでサーバーを立てることが多いのですが、Linuxも同様にPCに入れたらまずはソフトウェアのインストールや更新をやらないといけないです。例えば

sudo apt update (パッケージリストの更新)

sudo apt upgrade(パッケージの更新)

とかのコマンドを一つ一つ打って、動くまでの環境を整えないといけません。
上は単にOS入れただけの話ですが、本格的にWebサーバとかデータベースサーバのつもりで立てたりすると、もっといろいろ手順要ります。DBインストールするとか。
これをいちいち、サーバ作るたびに人力でやっていたというのが昔の話です


でも全く同じ環境のサーバーをたくさん作るとしたら面倒ですよね。
作った先輩社員が優秀で他の企業に転職したら、どんな風に作ってたのかサーバーから読み解かないといけないですよね。(てか優秀ならいいですよ。多分どっかにドキュメントあるし引継ぎもちゃんとするし。でも無能な奴なら中身ぐっちゃぐちゃで引継ぎめっちゃめちゃで多分再現不可能)


ということで、これらのサーバー構築に関する一連の作業をコード化してテンプレートとして、誰でもなんぼでも同じサーバーを作れるようにする技術がDockerになります
ただ、このDockerは普通のPCに入れて使えるというものでもないので、そのあたりはおいおい説明するとします。

今や知ってて当然のDockerですが、概要はこんな感じです。次からはちょっとギア上げて本格的な話したいと思います。