【Docker基礎】Dockerとサーバ

 Docker の話をするうえで、「サーバ」の存在は切り離せません。Docker はしばしばクライアント PC でも動かせますが、やはり本格的に使われるのは サーバ上 です。
 そこでまずは、Docker と関係が深い「サーバ」とはどのようなものなのか、基本を押さえておきましょう。

サーバには2種類の意味がある

 「サーバ」と一口に言っても、機能(役割)としてのサーバ物理的なマシンとしてのサーバ という2つの意味があります。

意味具体例
機能(役割)としてのサーバ「Webサーバ」「メールサーバ」「データベースサーバ」など。
ソフトウェアによって機能を提供する。
物理的なマシンとしてのサーバ「あの机の上にある黒い箱」「LANケーブルが挿さっている専用マシン」など。
デスクトップPCのようにどこかに実在する。

機能としてのサーバ

  • 「Webサーバ」は、Web機能(HTTPでのコンテンツ配信)を提供
  • 「メールサーバ」は、メール機能(メールの送受信)を提供
  • ほかにも、ファイルサーバ、DNSサーバ、FTPサーバ、などなど

このように「○○サーバ」とは「○○機能を提供するサーバ」のことを指しています。

物理的なマシンとしてのサーバ

  • オフィスの片隅やデータセンターに設置された専用マシン
  • スペックが高く、24時間稼働することを前提としたハードウェア

 最近はクラウドの普及により、オンプレミス(自社設置)のサーバを見かけないケースも増えましたが、どこかに物理的なマシンが必ず存在しています。

物理サーバ1台に複数の機能サーバを同居させられる

 1つの物理サーバの上には、Webサーバやメールサーバなど、複数の機能サーバ を同居させることが可能です。

  • たとえば「Webサーバ兼、メールサーバ兼、ファイルサーバ…」といった具合
  • その際、OS が稼働している上で、Apache(Webサーバ用ソフト)や Sendmail(メールサーバ用ソフト)など、複数のソフトウェアをインストールして機能を追加します。

サーバでも OS の上でソフトウェアが動く

 サーバというと特別なイメージがあるかもしれませんが、基本的な構造は普通のパソコンと同じです。OS(Linux など)が動いており、その上で各種ソフトウェアが動作します。

  • 「Webサーバを作る」→ Webサーバ用ソフト(例: Apache, Nginx)をインストール
  • 「メールサーバを作る」→ メールサーバ用ソフト(例: Postfix, Sendmail)をインストール

こうして、「機能としてのサーバ」がマシン上に増えていくイメージです。

Docker がサーバで使われる理由

 サーバには複数の機能を同居させられますが、同時にその管理は 煩雑 になりがちです。たとえば、WebサーバとDBサーバが同じマシンに入っていると、ライブラリのバージョンが衝突したり、設定ファイルを誤って上書きしてしまったりすることもあります。

 ここで役立つのが Docker です。Docker を使えば、1台の物理サーバ上に 互いに独立したコンテナ を作成し、それぞれのコンテナ内に “機能サーバ” を実装できます。

  • Webサーバコンテナ、DBサーバコンテナ、メールサーバコンテナ…
  • それぞれが独立した環境を持つため、ライブラリや設定ファイルの衝突リスクが大きく減る。

Docker とサーバを理解するための基本コマンド

 ここで、Docker を使ってサーバ機能を立てる際によく使われる基本コマンドをおさらいしましょう。

コマンド説明実行例
docker pull <イメージ>DockerHub などのリポジトリから イメージを取得 する。
まだローカルに無いサーバソフトのイメージがあれば、まずこれを実行。
docker pull nginx
(Nginx イメージを取得)
docker run <イメージ>イメージからコンテナを 作成 & 起動 する。
イメージがなければ自動で docker pull してくれるため、「イメージ取得 → 起動」を同時に行う。
docker run -d -p 80:80 nginx
(Nginx コンテナを起動)
docker ps起動中のコンテナ一覧を 確認 する。
-a オプションで停止中のコンテナを含めすべて表示。
docker ps -a
docker stop <コンテナID> / <コンテナ名>指定したコンテナを 停止 する。docker stop my-nginx
docker rm <コンテナID> / <コンテナ名>停止中のコンテナを 削除 する。docker rm my-nginx
docker imagesローカルに存在するイメージの 一覧 を表示する。docker images

ポイント

  • Docker はサーバ機能を “コンテナ” という小さな仮想環境で分割できる。
  • 複数のサーバ機能を 1 台の物理サーバに詰め込む際、Docker が大いに役立つ。

まとめ

  • サーバ には「機能」と「物理マシン」の 2 種類の意味がある。
  • 1 台の物理サーバに複数のサーバ機能(Webサーバ・DBサーバ など)を同居させることが可能。
  • しかし管理が複雑になるため、Docker でコンテナを作ってそれぞれを独立させるとスムーズ。
  • 結果として、ライブラリや設定ファイルの衝突を最小限に抑えつつ、サーバ運用を柔軟に行える。

 このように、サーバと Docker は深い関係にあります。Docker を実際にサーバとして、どのように使うのか、コンテナ間の連携や運用のポイントなどは、4章の「Dockerでコンテナを作成して実行する」で、より詳しく解説します。