fbpx

[和訳]Docker に関するよくある10個の質問 #docker

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本稿は The 10 Most Common Questions IT Admins Ask About Docker(2016/7/27) の和訳記事です。

 

私たちは6週間の全行程で、HPE Discover、DockerCon、RedHat Summit 、Cisco Live など一連のイベントに参加しました!それぞれのイベントにおいてDockerの代表のひとりとして参加者とお話しすることができ、とてもうれしく思いました。IT運用部門で働いている人もいれば、開発部門で働いている人もいました。また、会社のインフラストラクチャチームでIT管理者として働いている多くの人々とも話をしました。そのうちに私は、そのような人たちが私にする質問に共通の傾向があることに気づきました。そこで私は考えたのです。IT管理者たちからの質問の中から最も多かったものを集めてリストを作ってみてはどうだろうかと。つまり、ITインフラストラクチャで働く人の中で同じ疑問を持っている人は他にもいる可能性が高いということです。

 

以下がIT管理者たちが心待ちにしているリストで、IT管理者からのもっとも多かった10の質問(とそれに対する回答)です。

よくある10個の質問
1.そもそもDockerとは正確には何なのでしょうか?”コンテナアプリケーション”に関する何かなのですか?
2.Dockerコンテナとは何ですか?VMとは何が違うのですか?仮想化インフラストラクチャの代わりにコンテナ化を利用することは可能ですか?
3.”Docker化"の利点は何ですか?
4.インフラストラクチャの視点からは、Dockerに必要とすることは何でしょうか。Dockerは私のデータセンターで動くハードウェアの一部なのでしょうか。また、環境にどれ程負担がかかりますか。
5.“Docker化したノード”とは厳密にどういう意味でしょうか?このノードはオンプレミスなのでしょうか、それともクラウド内にあるのでしょうか?
6.DockerコンテナはOS全体をパッケージアップしますか?それによりデプロイが簡単になりますか?
7.Docker EngineはどのOSに対応していますか?
8.Dockerは、私のインフラ管理をどのようにサポートしてくれますか?私のインフラ全てをコンテナ化するのでしょうか?
9.1ホストにつき、コンテナはいくつまで作動させることができますか?
10."Docker化のプロセス"を始めるには何をすべきでしょうか?

 

1.そもそもDockerとは正確には何なのでしょうか?"コンテナアプリケーション"に関する何かなのですか?

DockerはIT運用チームと開発チームの双方がアプリケーションを作成(Build)、配布(Ship)、実行(Run)するために使うオープンプラットフォームです。ソフトウェアのサプライチェーンの中で両チームが必要としている動作のアジリティとコントロールを兼ね備え、さらにポータビリティも備えています。私たちはアプリケーションとそれが動作するために必要なすべてのものをパッケージとしてひとまとめにしたスタンダードDockerコンテナを作ってきました。このスタンダード化によって両チームはアプリケーションをコンテナ化し、どのような環境のどのインフラストラクチャでも、どのようなプログラム言語でも使用できるようになりました。

2.Dockerコンテナとは何ですか?VMとは何が違うのですか?仮想化インフラストラクチャの代わりにコンテナ化を利用することは可能ですか?

コンテナ化は仮想化とは全く違います。コンテナ化はDockerエンジンからスタートするもので、1つもしくはそれ以上のコンテナを生成し、作動させるためのツールです。互換性のあるOSであればどのようなハードウェア、ソフトウェア、クラウドホストであっても使う事が出来ます。

コンテナ化は、複数のルートファイルシステムを実行するホストOSのカーネルを利用するものです。

これらのルートファイルシステムのことを私たちは"コンテナ"と呼んでいます。それぞれのコンテナはホストOS内でカーネルを共有しているため、同一のホスト上で複数のDockerコンテナを作動させることができます。

VMと違い、コンテナはOSを内蔵しておらず、他のコンテナと最低限のカーネルを共有しています。ホスト上で作動しているそれぞれのコンテナは完全に独立しており、このため同一のホスト上で作動している別のアプリケーション同士が互いを認識することはありません。(Dockerネットワーキングをお使いいただくと、マルチホストのオーバレイネットワークを作成し同一ホスト上のコンテナ同士の通信を可能にすることもできます)

下の図の左側がコンテナ化のイメージ、右側が仮想化のイメージです。コンテナ化(左)が仮想化(右)とは違ってハイパーバイザーもマルチOSも必要としないことがわかります。
docker_blog_16080401

Dockerコンテナと従来のVMは背反するものではなく、VMをコンテナに置き換える必要はありません。実際DockerコンテナはVM内で作動させることができます。このため両チームはそれぞれのサービスをコンテナ化しVMを通して複数のDockerコンテナを作動させることができます。

docker_blog_16080402

3.”Docker化"の利点は何ですか?

環境をDocker化すると、企業チームはDockerコンテナをサービスプラットフォーム(CaaS)として利用することができます。CaaSは、開発チームやIT運用チームにアジリティとポータビリティを提供します。また、これはチームの環境内でコントロールできます。

開発部門はDockerを愛用しています。なぜならアプリケーションを素早く構築、リリースできるからです。Dockerコンテナはポータブルで、どんな環境でも動作する(Docker Engineが物理上またはバーチャルのホスト、あるいはクラウドホストにインストールされていれば)ため、開発部門は開発から環境準備、本番稼動まで、コーディングし直す必要もなくシームレスに行うことができます。これによりアプリケーションライフサイクルのスピードが加速し、アプリケーションを13倍以上の頻度でリリースすることができます。また、Dockerコンテナを使えば、開発部門はアプリケーションのデバッグや、アップデートイメージの作成を格段に簡単に行うことができるようになり、アプリケーションのアップデートバージョンを素早くリリースできるようになります。

開発部門がアプリケーションを独自のマナーで構築しリリースする一方、IT運用チームは環境を管理し、セキュリティを保持します。Docker CaaSプラットフォームにはDockerがサポートしている、オンプレミスへのデプロイ、ロールベースのアクセス制限、LDAP/ADとの統合、イメージ認証などのエンタープライズ向けのセキュリティ機能を多く持っています。

さらに、IT運用チームはどんな環境においてもDocker化したアプリケーションを管理し、デプロイし、スケーリングすることができます。例えば、Dockerコンテナのポータビリティによりチームは、AWSで実行中のワークロードを、コーディングし直す必要もなくダウンタイムもなく、Azureへマイグレーションすることができます。また、ワークロードをクラウド環境から物理のデータセンターへマイグレーションすることができ、さらにはそれを元に戻すこともできます。これによりチームは、特定のインフラストラクチャタイプにとらわれることなく、ビジネス上の必要性に応じてインフラの最も良い部分を活用することができます。

DockerコンテナをVMにおいて実行できるという性質と、仮想化などの従来のツールと比較して軽量であるという性質とを併せることで、チームはインフラストラクチャを20倍以上も最適化することができ、プロセスにおいて費用の節約が可能です。

 

4.インフラストラクチャの視点からは、Dockerに必要とすることは何でしょうか。Dockerは私のデータセンターで動くハードウェアの一部なのでしょうか。また、環境にどれ程負担がかかりますか。

Dockerエンジンはホストにインストールされているソフトウェアであり(ベアメタルサーバー、VM、あるいはパブリッククラウドインスタンス上で)、あなたが必要とする唯一の”Dockerインフラストラクチャ”です。Dockerコンテナを作成、実行、管理をするため、必要となるハードウェアインストールは事実上一つもありません。

Dockerエンジン自体は非常に軽量で、トータルで約80MB以内です。
5.“Docker化したノード”とは厳密にどういう意味でしょうか?このノードはオンプレミスなのでしょうか、それともクラウド内にあるのでしょうか?

Docker化したノードとは例えば、Docker Engineがインストールしてあり、実行されているベアメタルサーバー、VM、パブリッククラウドインスタンスなどであり、何でもノードと成りえます。

Dockerはクラウドにあるものはもちろん、オンプレミスに存在しているノードも管理します。Docker Datacenterはオンプレミスソリューションです。企業はそれを、アプリケーションを作成、管理、デプロイ、スケーリングするのに使う事が可能で、Dockerチームからサポートを得られます。バーチャルプライベートクラウドやパブリッククラウドプロバイダに存在するものに加え、既存のデータセンターに存在するホストも管理することができます(AWS、Azure、Digital Ocean、SoftLayerなど)。

6.DockerコンテナはOS全体をパッケージアップしますか?それによりデプロイが簡単になりますか?

DockerコンテナはOSをパッケージ化しません。Dockerコンテナはアプリケーションと、アプリケーションを実行するために必要のあるすべてをパッケージ化します。エンジンはホスト上で実行中のOSの上部にインストールされています。コンテナは、一つのホストで複数のコンテナを実行できるようこのOSをシェアします。

7.Docker EngineはどのOSに対応していますか?

Docker EngineはUbuntu, CentOS, OpenSUSE, RHELなど、主要なLinuxディストリビューションすべてに対応しています。今年の下半期にはWindows Server 2016向けのサポートを開始します。

8.Dockerは、私のインフラ管理をどのようにサポートしてくれますか?私のインフラ全てをコンテナ化するのでしょうか?

Dockerはインフラストラクチャ管理にフォーカスしていません。プラットフォームはインフラストラクチャ非依存であり、Docker Datacenterなどのソリューションを使い、インフラストラクチャのタイプに関わらずアプリケーションがスムーズに動くように管理しています。これによって企業が必要とするアジリティ、ポータビリティ、そしてコントロール性が得られます。実際のインフラ管理の責任はあなたのチームが担うことになります。

9.1ホストにつき、コンテナはいくつまで作動させることができますか?

作動できるコンテナの数は、環境によって異なります。アプリケーションのサイズ、利用可能なリソース(例:CPU)がコンテナの数に影響を与えます。残念ながらコンテナは魔法ではありません。コンテナで新しいCPUを作り出すことはできません。しかし、コンテナはリソースを活用するより効率的な方法を提供します。コンテナ自体は超軽量であり(各コンテナがOSを共有するか個別OSを使うかの違いはありますが)、作動させているプロセスが動いている間だけ動く、いわば不変のインフラなのです。

 

10”Docker化のプロセス”を始めるには何をすべきでしょうか?

あなたのチームがDockerを使い始めるベストな方法は、開発者に Docker for Mac or Docker Windows.をダウンロードしていただくことです。このリンク先にはDockerをMacもしくはWindowsデバイスに導入するネイティブインストレーションがあります。開発者はアプリケーションを使ってDockerfileを作ることができます。Dockerfileはすべてのアプリケーションの設定が明記されているものです。実質的にDockerイメージのデザインと呼べるものです。このイメージはあなたのアプリケーションのスナップショットであり、スナップするコンテナがどのようなものかDocker Engineが参照するものです。

開発部門がDockerをまだ利用していないのであれば、詳しい情報が掲載されている我々のウェブサイトをご紹介ください。 www.docker.com

追加の質問: 私たちの環境には大規模アプリケーションが複数あります。Dockerはマイクロサービスでのみ有効に作動するのですか?

これはDockerに関する大きな誤解の一つです。Dockerは大規模なアプリケーションもマイクロサービスベースアプリケーションもコンテナ化できます。Dockerを活用されているお客様のほとんどは、既存の大規模アプリケーションをコンテナ化して、Dockerコンテナのポータビリティと隔離性を活用しています。

Dockerコンテナはあらゆるアプリケーション(一つの大規模アプリであれ分散型であれ)をパッケージ化でき、あらゆるインフラにワークロードを移植できます。このポータビリティをもってすれば、企業は、ハイブリッドクラウドに移行する等の戦略が策定できるようになります。

マイクロサービスでの典型的な使われ方は、お客様が個々のサービスをコンテナ化し、Docker Compose等のツールを使用してマルチコンテナで分散化されたアプリケーションを一つのアプリケーションとして本番環境にデプロイするものです。

数社の企業は、ハイブリッド環境を用意して、Docker化された大規模アプリケーションをDocker化された分散アプリケーションとして徐々に再構築しています。こちらはADP社でのDocker Datacenterの導入事例です。

さて、以上がIT管理者からのもっとも多かった10の質問とそれに対する回答になります。

ここで私から皆様へ質問があります。皆様のチームはDockerを利用開始されましたか?もしまだでしたら、是非このホットな技術をお試しください。

コンテナ対VMに関してより詳しくお知りになりたい場合は、オンラインセミナー「仮想化環境管理者のためのコンテナ」をご覧ください。

その他の関連資料は以下の通りです。

 

Dockerに関してさらに学ぶには

・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.12リリースノートを読んでみましょう。
Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
DockerCon 2016に登録してみましょう。
DockerCon EU 2015のビデオを見てみましょう。
Dockerコミュニティへの貢献を始めましょう。

新規CTA