【入門編】Docker とは?メリットと何ができるかをわかりやすく解説


【入門編】Dockerとは?メリットと何ができるかをわかりやすく解説

開発業務及び本番システムでDocker を活用するケースが増えていますが、大まかには知っているけれどもいざ導入を検討しようとすると、わからないことが出てくるケースが多いようです。またAWSなどのクラウドサービスでDockerを簡単に使えるサービスが注目されています。そこで今回はDockerの基本と何ができるかをわかりやすく解説し簡単につかうAWSサービスを紹介します。

Docker とは?

Dockerとは、Docker社が開発したコンテナタイプの仮想環境のなかで、アプリケーションを作成したり、配布したり、実行したりするためのプラットフォームです。Dockerで使われるコンテナとは、ソフトウェアを開発・出荷・展開するための標準的なユニットのことで、アプリケーションの実行に必要なコードやランタイム、システムツール、システムライブラリなどをすべて含んでいます。

Docker と仮想マシンの違い

Dockerと仮想マシンは、ともにリソース分離と割り当てのためにつかわれますが違いはどこでしょうか。

Dockerでは、コンテナによって仮想環境をつくります。ホストマシンのカーネルを複数のコンテナが利用し、ユーザースペースが分離されたプロセスで実行されます。コンテナのサイズは一般的には数十MBと軽量です。

一方仮想マシンは、ホストマシン上でハイパーバイザーを使用して複数の仮想マシンを実行します。複数の仮想マシンそれぞれにオペレーティングシステムやアプリケーション、バイナリ、ライブラリの完全なコピーが含まれているため数十GBのサイズが必要です

つまり、Dockerは仮想マシンよりサイズが小さいため占有するスペースが少なくてすみ、特に起動が高速でより多くのアプリケーション処理が可能となり効率的です。

Dockerを使うメリット

Dockerを使うメリットは以下の4点があります。

1軽量なため効率的に作業ができる

前述のDockerと仮想マシンの違いで紹介したように、Dockerは仮想マシンと比較して軽量なため高速でアプリケーションの作成・実行ができます。
また開発環境に変更が生じたときでも、Dockerは軽量なため効率的に作業ができます。

開発環境に変更が生じたとき、仮想マシンの場合は、システム管理者が作業に携わるエンジニア全員に手順書を配布して変更を依頼するか、仮想マシンの変更イメージを配布しダウンロードを依頼します。手順書の場合は、エンジニアの変更ミスが発生する可能性がありますし、イメージの場合は容量が非常に大きくなるので、ダウンロードに時間がかかります。

一方、Dockerで開発環境に変更が生じた場合は、仮想マシンと同様エンジニア全員に変更イメージを配布しダウンロードを依頼しますが、コンテナのイメージは軽量なので時間をかけずにダウンロードが可能です。

2コード化されたファイルで同じ環境が作れる

Dockerではミドルウェアのインストールや各種環境設定をコード化できるため、開発工程で作成した環境をコード化し、同じ環境で本番環境をつくることができます。これによって、開発環境では動いたが、本番環境ではうまくいかないといった環境によるリスクを軽減することができます。

3配布がしやすい

Dockerでは、Web上のDocker HubでDockerイメージを取得すれば、すぐに使用できるコンテナが起動できます。エンジニアが作成したDockerイメージは、他のエンジニアに配布しやすく、エンジニアによる環境バージョンのずれや、環境準備に伴うミス防止や作業時間の短縮にもつながります。

4スクラップ&ビルドが楽にできる

Dockerイメージは、コンテナ名を変えて新たな開発につかえるため、環境をつくる必要がなくなり、スクラップ&ビルドが楽にできます。

Dockerで何ができる?

Dockerで何ができる?

現代の製品やサービスの開発においては、多種多様の開発検証環境が必要です。また、既存の製品やサービスについても保守やリニューアルに関して開発環境が必要となります。さらに近年グローバル化がすすみ、国内だけでなく海外拠点も含めた開発環境の共通化が重要な課題です。

Docker によって、OS内に独立した仮想環境(軽量なコンテナ)を複数生成することができ、コンテナによってOS内に多面の実行環境を構築でき、多種多様の開発検証環境や開発環境の変更にも柔軟に対応できます。また、独立した環境のコンテナを生成することでファイルやバージョン、設定やポートの競合回避ができ開発環境の共通化を推進できます。

AWSでDockerを簡単につかう

Docker をどのように導入するかという点も気になる点ですが、AWSなどのクラウドサービスでDockerをすぐに使えるサービスが注目されています。

クラウドサービス上のCaaS(Container as a Service)をセットアップし、ローカル開発環境にて作成したDockerイメージを利用して、コンテナをクラウドサービス上で起動することで、ステージング環境、本番環境システムでもコンテナを利用する事ができます。

まとめ

Dockerとは、コンテナタイプの仮想環境のなかで、アプリケーションを作成したり、配布したり、実行したりするためのプラットフォームです。 Dockerは、軽量なため効率的に作業ができ、コード化されたファイルで同じ環境が作れ、配布がしやすく、スクラップ&ビルドが楽にできます。Docker によって、OS内に多面の実行環境を構築できるため多種多様の開発検証環境や開発環境の変更に柔軟に対応が可能です。Docker の導入には、AWSなどのクラウドサービスで簡単に使えるサービスがありますので検討してみてはいかがでしょうか。

参考資料

【Amazon WorkDocsとは?AWSのクラウドファイルサーバー】
https://column.skyarch.net/amazon-workdocs/

【AWSの全サービスを一言で表現してみた!】
https://column.skyarch.net/aws-service/