0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初学者目線】なぜDockerを使うのか?

Posted at

はじめに

最近、Linuxの概念や仮想化技術について学ぶ中で、「Docker」に興味を持ちました。

最初は「Docker=仮想化ソフト」だと思っていたのですが、調べてみるとそれだけではなく、抽象的な説明が多くて、なかなかピンときませんでした。

さらに調べていくうちに、Dockerは長い技術の歴史の上に成り立っていることを知りました。

そこで、まずは背景となる「なぜDockerが必要とされるようになったのか?」を整理することから始めました。


1. 通常のサーバー環境(共有リソース)

普通、プロセス・ファイルシステム・ネットワークはOSの共有リソースとして、複数のアプリが使っている。
たとえば、AWSの1つのインスタンス上に phpnginxmysql を全部インストールすると、それぞれが同じOS環境を共有することになる。

このとき、例えば php のバージョンを変更すると、それに依存している nginx との連携がうまくいかなくなったり、他の構成に思わぬ影響が出る可能性がある。

こういった不具合は、すべてのアプリが同じリソース(プロセス空間、ファイル構成、ネットワーク)を共有していることが原因。


2. インスタンスを分けるという解決策

構成の衝突を避けたい場合、いっそのことインスタンスを分けるという方法がある。
例えば:

  • EC2 A → nginx
  • EC2 B → php
  • EC2 C → mysql

この方法なら、各環境は完全に分離されるため、構成ミスや依存関係のトラブルは少なくなる。

しかしその一方で:

  • インスタンス間の通信には、ポート開放やセキュリティ設定が必要
  • IPアドレスやDNSの管理も増える
  • 起動の順番、依存関係の制御も手動で行う必要がある

つまり、運用が複雑になってしまう。


3. Dockerを使った構成

そこで登場するのが Docker。

Docker を使えば、同じインスタンスの中に phpnginxmysql をそれぞれ独立したコンテナとして分けて動かすことができる。

コンテナは以下のような特徴を持ちます:

  • 独立したプロセス空間・ファイルシステム・ネットワークを持つ
  • 他のコンテナとリソースが干渉しない(バージョン衝突が起きない)
  • docker network を使えば、同一ネットワーク内で簡単に通信できる
  • docker-compose.yml を使えば、依存関係や起動順も定義して一括起動できる

4. まとめ

構成方法 メリット デメリット
1台に全部入れる 手軽に始められる 構成衝突・再現性が低い
インスタンス分割 環境の独立性が高い 管理が煩雑・コストが高い
Docker 分離・連携・再現性のバランス◎ Dockerの学習コスト(慣れが必要)

Docker を使えば、バージョン管理も、起動順の制御も、再現性のある環境構築も、一気に解決できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?