Dockerとは?
1台のPC上に複数の仮想的なサーバー環境を手軽に構築できるソフトの事。
Dockerでは、あらかじめ構築したサーバーのセッティングを『イメージ』として配布してできるので、Docker設定ファイルに簡単な設定を書くだけですぐに構築済のサーバーを起動する事ができる。Docker設定ファイルをチーム内で共有すれば、全員のPCに同じ構成の開発環境を構築する事も簡単にできる。
公式サイト:docker
「コンテナ型」の「仮想化」プラットフォーム
「コンテナ型」の「仮想化」プラットフォーム、Dockerの登場によって、従来の作業や管理方法が激変し、開発などで発生するさまざまな作業の自動化が可能になった。
Dockerにおける貨物輸送に用いる「コンテナ」にも同じような意味合いがあり、アプリケーションやサーバを「コンテナ」という規格が定まった容器に収納することで、扱いやすくしている。
Dockerの仕組みを理解するには、「仮想化」という概念が重要で、10年ほど前は、1台のサーバに1つのOSをインストールして利用するのが一般的でした。対して「仮想化」は、1台のサーバに仮想化ソフトをインストールすることで複数のサーバとして利用することができる。
しかし、「仮想化」といってもPCのハードウェア全体を仮想化することで、OSやアプリケーションなどを動作させる「完全仮想化」の仮想マシンと違い、「コンテナ型」はコンテナがホストOSのカーネルを利用することからメモリやディスクの使用量が少なく、軽量で高速な動作が可能。
コンテナ型
コンテナ型は、OS上に「コンテナエンジン」という仮想化ツールをインストールし、コンテナイメージを作成することでコンテナを仮想化する方式。ゲストOSを必要としない分、少ないリソースで済み、コストパフォーマンスにも優れていますが、仮想技術としては後発ということもあり、構築できるベンダーや管理ツールが少ないという現状はある。
ホスト型やハイパーバイザー型といった仮想化環境とコンテナ型の仮想化環境の最大の違いはゲストOSの有無で、前者で仮想サーバを作った場合、それぞれのゲストOSを独立したサーバとして起動させるので、アプリの構築・運用における自由度が高くなりますが、毎回OSを起動しなければいけないので物理環境よりも性能が劣る可能性がある。
一方、コンテナ型でコンテナを作った場合、各コンテナが1つのOSを共有しているため、OSに関して不自由ではありますが、メモリやディスクといったリソースやユーザやプロセスなどをサーバごとに隔離できるため、高速起動・実行できる。
Dockerを使うメリット
メリット①:システム導入までの手間が省ける
OSは既に共有して利用しているので、設定を省くことができ、システム構築に必要な最低限のプログラムのみのインストールですぐに使い始めることができる。
メリット②:起動時間の短縮と処理速度の向上
OSが既に立ち上がっている分、サーバーの起動時間を短縮できる。また、最小限のリソースの使用量で済むため、サーバーへの負荷が低く、1度に多くのプログラムを処理できる。
メリット③:コンテナ設定の再利用が可能
Dockerで一度作成したコンテナは、他のコンテナに適用させることで再利用が可能。
リソースを拡大したい時や検証したい時などに、すぐに同じ環境設定のコンテナを準備することがでる。
Dockerの使い方や基本コマンド
バージョンの確認
docker version//インストールされたDockerのバージョンを確認する
動作しているコンテナの確認
docker ps//動作しているコンテナを確認する
現在取得済みのイメージの一覧表示
docker ps -a//取得済みのイメージを一覧表示する
docker images//ダウンロードしたDockerイメージを一覧表示する
Dockerの実行
docker run hello-world//Dockerを実行する
「Hello from Docker!」と表示されれば成功
参考サイト
Docker最初の1歩 Webアプリの開発環境を構築してみよう!【初心者向け】【プログラミング】
【Docker入門】初心者向け!Dockerの基本を学んでコンテナ型の仮想環境を作ろう!
Docker入門(第1回)|初心者向けに概要や基本コマンドを解説