前置き
※ 本記事はエンジニア転職を目指している私が学習のアウトプットのために書いている記事になります。
対象
- docker初心者
- プログラミング初学者
- dockerについてイメージを掴みたい人
本記事の構成
- dockerとコンテナについて(前章)
- コンテナを活用することでできるようになったこと
- コンテナについて
- まとめ
- 参考
dockerとコンテナについて(前章)
dockerはLinux上で動作するサービスでコンテナを実現するサービスを提供しています。
ほかにもコンテナ関連のサービスはあるが、圧倒的な人気を誇るのがdockerだそうです。
そもそもコンテナとは何なのかを説明します。
コンテナとは文字通り箱であり、この箱の中身に入るのは
- Linux基本コマンド
- ライブラリ
- フレームワーク
- アプリケーション
である。
簡単に言えば、dockerを利用すれば、何かしらのサービスを**コンテナ(箱)**の中に入れて運用できるようになります。
では、このコンテナと呼ばれる箱でサービスを運用するメリットについて深掘りしたいと思います。
コンテナを活用することで、できるようになったこと
- 同一ディレクトリ内で複数のサービスを別々に運用できる。
- 同一ディレクトリ内にある複数のサービスの内、影響を与えることなく、サービスを更新できる。
ではコンテナが活用されるまでは、どうだったのか。
-
同一ディレクトリ内で共通のフレームワークを使用して、複数のサービスを運用する
(同一ディレクトリ内でRuby on Rails(以下Railsと記述する)を共通のフレームワークとして使って、TwitterとLINEを運用するみたいなこと) -
同一ディレクトリ内で共通のフレームワークを使用している複数サービスの内、どれか一つに更新する必要が生じ、フレームワークの仕様について変更する場合、運用されているその他のサービスについてもフレームワークの使用変更に伴う変更を行わなければならない。つまり一つのサービスの更新が他のサービスに影響を与えてしまいます。
例えばTwitterのサービスを更新する都合でフレームワークであるRailsの仕様について変更する必要が生じた場合に同一フレームワークで運用されているLINEについてもフレームワークの仕様変更に伴う変更を行わなければならないのです。
片っぽを変更する場合は、もう片っぽも変更するのです。
もしくは、片っぽのディレクトリを変更して、影響受けないようにするとか。
めんどくさいですね笑
これを解決したのがコンテナなんです!
コンテナについて
コンテナはサービスを隔離の状態にすることができます。
サービスをコンテナの中に入れて隔離の状態にすることで、同一ディレクトリに二つのサービスが競合していても影響を与えることなく、運用できます。
そのほかにも複製を簡単にできたりもします。
前はファイルをひとつひとつコピーしたりしていたようですが、コンテナを使用していれば、コンテナごと複製が可能なので、作業量が少なく済みます。
まとめ
今回はdockerのさわりのさわりの部分について、説明しました。
docker初心者の方やプログラミング初学者の方がイメージを掴めればと思い、書きましたので、学習の参考にしていただければと思います。
今後は、dockerの運用方法等について説明したいと思います。
参考