インターン先でDockerの導入を提案したところ、「やってみて」と言ってもらえたのでDockerの導入をしています。
そこで今回は、そもそもDockerって何なの?何ができるの?どんな仕組みなの?という方向けの記事を書いていきます。
Dockerって何?
よくある説明としては、「Dockerとはコンテナ仮想化環境でアプリケーションを管理したり、実行したりするためのプラットフォーム」と言われます。
でもこれだけ言われたらよくわかんないですよね。
ここで理解しないといけないのが、
- 仮想化とは何か
- コンテナとは何か
この2つを理解しないと訳がわからないと思います
仮想化とは何か?
そもそも「仮想」という言葉はどういう意味を持っているでしょうか?よく仮想化サーバーのようによく使われる単語ですよね。仮想という言葉は英単語で言うと、virtualと呼ばれます。この英単語には、「実質的に」、「事実上の」と言う意味があります。つまり、例えば仮想化サーバーというと、物理的なサーバーではないんだけど、実質的には物理的なサーバーと同じように扱えるサーバーのことを言うんです。
もっと抽象化して言うと、仮想化とは実際に目に見えるものではないんだけど、あたかもそこに存在しているかのように動いてくれるものを言うんですね。
コンテナとは何か?
コンテナは実世界でも色々使われています。
こんな感じですね。
コンテナは中身にいろいろな商品等が含まれています。
そのコンテナの中身にアプリケーションやプログラム、OSやミドルウェア等が入っていて、それらが動作しているようなイメージを持ってもらえると理解しやすいとおもいます。
このコンテナのメリットは何かというと、コンテナを一度作っちゃえば、特段変更をせずに違う環境でも動作するということです。例えば、コンテナを作成してしまえば、windows環境だろうが、Macであろうが、そのアプリケーションが動作するということです。
また、コンテナは動作が軽いというのもメリットの1つです。
あらためてDockerって何?
「Dockerとはコンテナ仮想化環境でアプリケーションを管理したり、実行したりするためのプラットフォーム」
このようにDockerはこのように言われるわけですが、理解できるでしょうか?
コンテナ仮想環境とは、アプリケーションやプログラムやOSやミドルウェア等が入っているコンテナが、実際には目には見えないけど、あたかも存在しているかのように動いている環境のことです。
そのような環境でアプリケーションを管理したり、実行したりするためのプラットフォームのことです。
Dockerの何がいいのか
Dockerのメリットはなんと言っても環境の差異を消してくれるというものです。先ほどコンテナのメリットは、コンテナを一度作っちゃえば、特段変更をせずに違う環境でも動作するというのがあります。
例えば、Dockerを導入せずに、Railsのチーム開発していた場合を考えてみましょう。
AさんはRails5で開発をしていて、BさんはRails6で開発をしていて、CさんはRails7で開発をしていたらどうでしょう。バージョンによるバグが存在してしまうかもしれません。そうすると開発が滞ってしまいますよね。それはあまり良くないですね。
ですが、Dockerを導入しておけば、1つのバージョンに設定できるので、そのようなバグは生まれる確率はほぼ0でしょう。
このように環境の差異は無くなるのが、Dockerのメリットです。
以上です。Dockerを導入していない方は導入するのを検討してみてくださいね!
何か間違いがありましたら、ご教示いただけると幸いです