コンテナとそれを管理するDockerはシステム運用にどう影響する?

コンテナとそれを管理するDockerはシステム運用にどう影響する?

「コンテナ型仮想化」は、仮想マシンに並ぶ新しい仮想化技術です。そのコンテナを管理するツールの1つで、今や標準となっているのがDocker(ドッカー)です。今回の記事では、そのDockerの概要を見てみましょう。

Dockerとは?

Dockerとは、Docker社が開発した、仮想化環境を提供するオープンソースソフトウェアです。2013年に公開されて以来、ソフトウェアやアプリケーションの開発やテストで、オンプレミスやパブリッククラウドなど環境を問わず、幅広く使われて急速に普及してきました。前回の記事で紹介したコンテナとしてのいろいろなメリットは、そのままDockerを使うメリットでもあります。

Docker
https://www.docker.com/

仮想化に使うコンテナ技術って何?仮想マシンじゃどこがダメなのか?
https://un4navi.com/prologue/19042/

レイヤで差分を管理できるファイルシステム

Dockerの大きな特長は、ファイルシステムを差分で管理できることです。一般に、コンテナ環境を実行するには、それぞれディレクトリ階層を用意する必要があります。Dockerでは、アプリケーションとその実行環境、展開や操作方法、ディレクトリなどをそのままバイナリファイル化した「Dockerイメージ」と呼ばれる状態で取り扱われます。DockerイメージをDocker Engine上で起動した状態がDockerのコンテナです。
新しいコンテナは、このイメージをベースにして作られますが、中のファイルシステムは書き込み禁止になっています。そのため、Dockerのコンテナに書き込まれた内容は、すべて新しい「レイヤ(階層)」として積み重なるように保存されていきます。更新された差分ごとに、レイヤとして取り扱えます。レイヤの内容は「コミット(書き込み・確定)」して新しいイメージとして保存したり、前のイメージに戻したり、新しい変更を試したりが簡単にできます。編集履歴を管理しながら、少ないディスク領域でさまざまなコンテナを実行できるため、開発者にとっては理想的な環境といえます。互換性も高く、基本的にはどのDockerでも動作します。
また、Dockerには、Dockerイメージに適用する指示をスクリプトで記述しておける「Dockerfile」という仕組みがあります。ベースにするDockerイメージにDockerfileを適用すれば、いつでも簡単に同じ環境が自動的に構築できるので、取り扱いが非常に楽です。

Docker Hubというコミュニティ

Dockerには、構築済みのコンテナを公開・共有できる「Docker Hub」というコミュニティがあります。いわば、Docker版のGitHubや、開発者用ライブラリ。さまざまなOSやアプリケーション、ミドルウェアがすでにインストールされたDocker社の公式Dockerfileや、ユーザが作ったDockerイメージが多数公開されています。目的に合ったデータをダウンロードすれば、完全に一致していなくても前述のように差分を補完するだけで、自分用のコンテナのベースとしてすぐに利用できる、開発者にとって心強いリソースです。

Docker Hub
https://hub.docker.com/

コンテナのシステム運用への影響とは?

開発者へのメリットが多数あるコンテナ技術ですが、システム運用にとっての影響や注意点は何でしょうか?

・開発と運用の連携

高速なスクラッチ&ビルドに対応する必要があります。Dockerを使うことで、簡単にコンテナを作ったり削除できるので、システム環境の管理としては楽な面もあります。マイクロサービス化したシステムの運用では、メリットがあります。
システム運用側から開発側への改善提案のために、負荷テストやモニタリングを自動化することで課題を洗い出すことで、ビルドやデプロイともスムーズにつながるような、継続的な連携が重要です。

・新しい統合型のシステム運用が不可欠

コンテナ技術を導入すれば、監視・管理が必要なシステムの対象が増えます。近年では、物理サーバ以外に、ハイパーバイザ型仮想マシン、クラウドが広く使われていますが、そこへプラスしてコンテナ型の仮想化環境が加わります。
また、監視にも2つの側面があります。一つは、コンテナそのものの死活やリソース、もう一つは、コンテナ上で稼働するアプリケーションやミドルウェアのログの監視です。Docker専用のモニタリングツールを使ったり、APIやメールで通知する方法がありますが、今までの手法がそのまま流用できるとは限りません。個別のツールを切り替えるのでは非効率なため、各社のAPI仕様に沿って柔軟に制御できる、マルチプラットフォーム対応のシステム運用サービスが不可欠です。

コンテナとDockerは、システム運用でも要注目!

コンテナを管理するDockerによって、従来よりもスムーズに本番環境へデプロイできるのであれば、システム運用も効率化できるはずです。Dockerで複数のコンテナをまとめて管理・監視できるDocker SwarmやKubernetesなどのサービスもあり、今後は本番環境での利用も増えていくでしょう。コンテナも複数を管理し、マルチクラウド環境になれば、ますますシステム運用を効率化する必要があります。
また、ユーザのニーズやビジネスの変化にも迅速に対応するには、アジャイルなシステム開発から運用までを一つの流れとして捉えるDevOpsの実現も不可欠です。システム運用の現場でも、コンテナ技術とそれを管理するDockerは今後ますます注目を集めそうです。

関連記事

ページ上部へ戻る