皆さんはDockerコンテナを使っていますか?
Dockerは「コンテナ型仮想化」とも言えるもので、従来の物理サーバー(オンプレミス)や仮想サーバーとは大きく違うものです。
そしてDockerは、サーバー上、パソコン、クラウドサービスとさまざまな環境で利用できるといった特徴もあります。
今回は、Dockerコンテナとはどういったものか、そして使うことでどんなメリットがあるかなどDockerコンテナのさまざまな内容について解説します。
目次
コンテナって?
まず「コンテナ」とはどういうものなのでしょうか?
コンテナとは簡単に言うと「プロセスだけを分離して動かす技術」です。
プロセスとは、Wikipediaでは以下のように記載されています。(リンクはこちら)
プロセスとは、処理のことである。情報処理においてプログラムの動作中のインスタンスを意味し、プログラムのコードおよび全ての変数やその他の状態を含む。オペレーティングシステム (OS) によっては、プロセスが複数のスレッドで構成される場合があり、命令を同時並行して実行する。
普通のコンピュータでは、OSがあり、その上で各プロセスが動いています。
これに対して、コンテナでは「プロセスだけがOSの上で分離して動作している」といったイメージです。図にしながら見ていきましょう。
2. 仮想化とコンテナとの違い
「サーバー上で仮想的にプロセスを分離した枠組みを作って動かす」
といった先ほどの解説を見て、「仮想化」と似ていると感じた人もいるのではないでしょうか。
また、仮想化とコンテナの違いはどこにあるのでしょうか。
仮想化とは
まず一般的な「仮想化」について少しおさらいをしておきましょう。
こちらの仮想化は、先ほどのコンテナ仮想化と比較すると以下のような図になります。
以下の図は、ハイパーバイザーと呼ばれる制御プログラムを介して仮想環境を動かすものですが、ホストOS上に仮想ハイパーバイザーをインストールする「ホスト型ハイパーバイザー」と、ホストOSを必要としない「ネイティブ型ハイパーバイザー」の2つのタイプに分かれます。
<ホスト型ハイパーバイザー>
OS上に仮想化用のソフトウェアをインストールする「ホスト型」といいます。
<ネイティブ型ハイパーバイザー>
OSを必要とせず「ハイパーバイザー」と呼ばれるソフトウェアをインストールしてその上で仮想マシンを動かす「ハイパーバイザー型」
仮想化をまとめると
上記の図でイメージは掴めたでしょうか。
「ハイパーバイザーがあり、その上で仮想化されたゲストOSがいくつも動いている」といったものが、仮想化サーバーです。
コンテナと仮想化、違いを整理すると
コンテナ仮想化とはどういったものか、一般的なの仮想化とはどういったものか解説をしてきました。
ここで、改めて両者を比較してみましょう。
コンテナ | 仮想化 | |
---|---|---|
ホストOS | 必要 | ▼必要 仮想化技術:ホスト型ハイパーバイザー ・VMware Workstation Player ・Oracle VM VirtualBox など ▼不要 仮想化技術:ネイティブ型ハイパーバイザー ・VMware ESXi ・Hyper-V ・KVM など |
ゲストOS | 不要 | 必要 ※各ゲストにはOSがインストールされる |
ゲストの形態 | プロセスのみ | OS+プロセス |
ホストOSとゲストOSとのやりとり | コンテナエンジン | ハイパーバイザー |
これと先ほどの図を合わせて考えると両者の違いはより明確に理解できるはずです。
コンテナの種類〜Dockerとは
コンテナ技術を用いてプロセスを実行する仕組みにはいろいろなものがあります。
たとえば、LinuxコンテナやOpenVZなどもコンテナと言えます。
そうしたコンテナ技術を活用したサービスで最も広まっているのがDockerです。
Dockerは、Docker Inc.によって2013年にリリースされたサービスで、Windows/Linux/Macなどさまざまな環境で動作することが特徴です。
KubernetesやDockerUIなど、GUIツールを使って管理が行うことができるというメリットがあります。
また現在では、DockerはAWSやAzure、GCPなど多くの大手のクラウドサービスでも対応が進んでいます。
Dockerコンテナを使うメリットとは
最近、開発の現場や各種サービスなどでDockerコンテナを使うケースが増えています。
では、Dockerコンテナを使うメリットはどういったところにあるのでしょうか。
コンテナを使うメリット
など
このように、従来のOS+アプリケーションから構成されるサーバーと比較してさまざまなメリットがあります。
どうすれば使える?
多くの点で従来のサーバーと比べてメリットの多いDockerコンテナですが、どうすれば使うことができるのでしょうか。
Dockerの利用には以下のような方法があります。
このようにDockerコンテナは目的や状況に合わせてさまざまな環境で利用することができるようになっています。
まとめ
今回解説したように、Dockerコンテナには従来のサーバーにはなかったようなさまざまなメリットがあります。
たとえば、開発の現場では、以下のようなメリットが挙げられます。
こうしたメリットは、スピード感を持った迅速かつスムーズなアプリケーション開発/リリースにつながります。
また、AWS、Azureなど多くのクラウド環境でもDockerへの対応が幅広く行われており、将来性も高いと言えます。
今後、「エンジニアとして仕事をしていく」あるいは「IT技術を活用してビジネスを展開していく」中で、Dockerは必ず押さえておくべき技術であると言えます。