「Docker(ドッカー)」とは

Docker(ドッカー)とは 

docker_logo
“コンテナ“と呼ばれる仮想化技術を使ったアプリケーションを開発、実行、また移動するための仕組みです。
一般的な仮想化技術(VMware, KVM etc..)はゲストOSを動かすことを目的としていますが、Docker(ドッカー)はゲスト内の“アプリケーション”を動かすことを目的としているという違いがあります。その為、ゲストの中の構成(ミドルウェア等)までDocker(ドッカー)で管理できます。

 

Docker(ドッカー)の特徴

特徴①

簡単に、Windows/Mac/Linux等の様々なOS環境や、様々なクラウド環境に導入することが出来ます。アプリケーションエンジニア寄りで、コンテナ内の状態(追加パッケージのインストールや、設定ファイルの設置、ファイルの書き換え)をDockerfile※として記録します。
※RPMのSPECファイルや、Makefileのようなイメージ

 

図1 コンテナ内の状態イメージ

図1 コンテナ内の状態イメージ

 

特徴②

コンテナのポータビリティ(移行能力)と動作の再現性を確保しています。例えば、コンテナをコンテナイメージとして出力し、別のクラウド環境にインポートすると、元のコンテナを動作させることができます。図2のようにオンプレミス環境、様々なクラウド、VPS間でコンテナを移行させることが可能です。この場合、最低限のOSファイル、ミドルウェア、アプリケーションファイルだけを移動すればよいので、ファイルサイズが小さくて済みます。

 

図2コンテナのポータビリティ(移行能力)のイメージ

図2コンテナのポータビリティ(移行能力)のイメージ

 

 

特徴③

起動が速く、動作が軽い。コンテナ技術で必要なアプリケーションのみ直接起動するので、高速に起動できます。また、仮想化によるオーバーヘッドも少なく動作も高速になります。結果、サーバー内のリソース消費が少なくて済み、完全仮想化方式(KVMなど)と比べ1台のサーバーに多数の仮想サーバーを収容することができ、仮想サーバーの中にインストールすることも可能です。

図3 仮想化方式ごとの起動処理シーケンス

図3 仮想化方式ごとの起動処理シーケンス

 

Docker(ドッカー)を上手に使う上でのコツ

・1コンテナ1アプリケーション

1コンテナ、1アプリケーションを心がけましょう。そうすると、アプリケーションごとに利用するミドルウェアのバージョン競合などが発生しなくなります。

・アプリケーションとデータの分離

アプリケーションとデータをコンテナレベルで分離し、保存したデータを永続化するようにしましょう。コンテナ内でアプリケーションとデータが同居していると、新コンテナによるアプリケーションのバージョンアップやデータの管理が難しくなります。

 

図4 アプリケーションとデータの分離イメージ

図4 アプリケーションとデータの分離イメージ

 

・Dockerfileの活用

コンテナの設定はDockerfileに記録するようにしましょう。コンテナにログインし、シェルからコマンドで設定作業やソフトウェアのインストールを行うと、コンテナ設定の再現が難しくなります。正しいDockerfileがないとコンテナクラスタソフトを使った場合に、フェールオーバー先で正しくコンテナを起動させることが出来ません。これら3つを実施すると、コンテナを使ったアプリケーション運用管理が楽になります。
次回はもう少し踏む込んで実際にサーバーインストールし、使ってみるところを書きたいと思います。

 

 

 

いわさき
テクノロジー&オペレーション開発本部所属             (監修:とみなが)                     

オススメ記事

関連サービス

VPS VPSクラウド