【入門編】Dockerとは?メリットと何ができるかをわかりやすく解説
開発業務及び本番システムで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によって、OS内に独立した仮想環境(軽量なコンテナ)を複数生成することができ、コンテナによってOS内に多面の実行環境を構築でき、多種多様の開発検証環境や開発環境の変更にも柔軟に対応できます。また、独立した環境のコンテナを生成することでファイルやバージョン、設定やポートの競合回避ができ開発環境の共通化を推進できます。
AWSでDockerを簡単につかう
Docker をどのように導入するかという点も気になる点ですが、AWSなどのクラウドサービスでDockerをすぐに使えるサービスが注目されています。
クラウドサービス上のCaaS(Container as a Service)をセットアップし、ローカル開発環境にて作成したDockerイメージを利用して、コンテナをクラウドサービス上で起動することで、ステージング環境、本番環境システムでもコンテナを利用する事ができます。
▼こちらの記事もおすすめ
>>AWS Fargateを利用したインフラ構築運用パターン
まとめ
Dockerとは、コンテナタイプの仮想環境の中で、アプリケーションを作成配布や実行したりするためのプラットフォームです。軽量なため効率的に作業ができ、コード化されたファイルで同じ環境が作れ、配布がしやすく、スクラップ&ビルドが楽にできます。
Dockerによって、OS内に多面の実行環境を構築できるため多種多様の開発検証環境や開発環境の変更に柔軟に対応が可能です。導入には、AWSなどのクラウドサービスで簡単に使えるサービスがありますので、検討してみてはいかがでしょうか。
参考資料
【Amazon WorkDocsとは?AWSのクラウドファイルサーバー】
https://www.skyarch.net/column/amazon-workdocs/【AWSの全サービスを一言で表現してみた!】
https://www.skyarch.net/column/aws-service/