以前は、企業がシステムを構築する上で、1台のサーバを設置し、その上に1つのシステムを作るオンプレミス型が主流でした。
続いて登場したのが、1台のサーバの上に複数のシステムを構築する「プライベートクラウド」や、ベンダーが保有するサーバを借りて構築する「パブリッククラウド」などです。
そして、次のインフラの選択肢として、Dockerという仕組みが脚光を浴びています。
DockerはDocker社が開発したコンテナという概念を管理するソフトウェアで、サーバを起動する方法がシンプルで、かつ起動や処理が速いことが特徴です。
今回はそんなDockerの特徴やよく使うコマンドを紹介していきます。
Dockerとは何かをわかりやすく解説
Dockerの仕組みをイメージする上で、手がかりとなるのが「仮想化」という概念です。10年ほど前であれば、1台のサーバに1つのOSをインストールして利用していました。
近年の「仮想化」は、1台のサーバにVMwareをはじめとする仮想化ソフトをインストールすることにより、複数のサーバとして利用できるものです。
Dockerも「仮想化」という点では共通していますが、完全仮想化のサービスを提供するのではなく、「コンテナ型」の仮想化サービスを提供しています。コンテナはサーバのカーネル(OSの中核となる部分)を利用し、プロセスやユーザなどをサーバごとに隔離することで、あたかも別のマシンがOS上に動いているかのように動かすことが可能となります。
OSを複数のサーバが共通して利用しているため、軽量で高速に起動・停止などができるという特徴があります。
Dockerの構成
ここでは、Dockerを構成している主な5要素を紹介します。
■Dockerイメージ
コンテナを立ち上げるために必要なミドルウェアなどの設定やコマンドが、ひとまとめになったテンプレートです。
通常はソフトウェアをインストールして、その後初期設定を行い、さらには細かな設定をカスタマイズする必要がありますが、このDockerイメージを使えばそれらの作業を省略することができます。
■コンテナ
Dockerイメージをもとに作られたWebサーバやDBサーバなどが動く仮想環境のことです。
■Dockerサーバ
コンテナとDockerイメージを管理するサーバです。
■Dockerクライアント
利用者がDockerを使用するために操作するコマンドやツール群を指します。
■Docker Hub(レジストリ)
Dockerのイメージが公開されているサイトです。フリーのソフトウェアのイメージをはじめ、個人で作成したイメージも公開されています。
利用者は、コンテナからDocker Hubにアクセスし、イメージをダウンロードすることにより、サーバやDBの設定をあまり気にすることなく、ソフトウェアを使ったシステムを構築することが可能となります。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Dockerの特徴は?何に優れているの?
Dockerは、これまでの完全仮想化のサービスと比較し、大きく3つの要素に優れています。ここでは、その3つの特徴を紹介します。
①システム導入の高速化
OSは既に共有して利用しているため、それらの設定は省き、システムを構築するために必要となる最低限のプログラムしかインストールする必要はありません。
そのため、すぐにプログラムを適用し、導入までのスピードを高速化することができます。
②起動時間の短縮化と多くの処理実装が可能
完全仮想化であれば、サーバを起動する際にOSレベルから立ち上げていく必要があり時間がかかります。
一方、DockerではOSは既に立ち上がっているため、その分サーバの起動時間を短縮化することができます。
また、リソースの使用量が少なく済むためサーバへの負荷が低く、1度に多くのプログラム処理を実装することが可能です。
③コンテナ設定の再利用が可能
1度作成したコンテナは、Dockerイメージを作成し、他のコンテナへ適用することにより再利用が可能となります。
検証してみたい時や、リソースを拡大したい時など、すぐに同じ環境設定が適用されたコンテナを準備することができます。
コンテナと仮想マシンの違い
Dockerをはじめとしたコンテナと、VMwareが代表例となる仮想マシンは何が違うのでしょうか。一番の違いはOS部分の仕組みです。
ハードウェアを仮想化し、複数のサーバを構築できる仕組みは変わりません。ただ、コンテナは1つのOSを共有して利用しているのに対し、仮想マシンはサーバごとにOSをインストールし動かしていきます。
仮想化上で様々なOSを利用できるというメリットがありますが、その分メモリやディスクの容量を消費することとなります。
一方、コンテナは1つのOSを共有化しているため、メモリなどのリソース消費はもちろんのこと、プロセスなどの起動も仮想マシンより早く実行することができるメリットがあります。
Dockerのコマンド例
ここでは、Dockerの操作のイメージを持つために、基本的なコンテナとイメージに関するコマンドを紹介します。複雑なコマンドではなく、「docker xxxx」という並び順が基本となり、非常にシンプルなコマンド体系となっています。
1. コンテナの起動(OSはCentOSを想定)
$ sudo docker run -it centos
2. コンテナの停止
$ sudo docker stop (CONTAINER IDまたはNAME)
3. コンテナの終了
$ sudo docker kill (CONTAINER IDまたはNAME)
4. コンテナの削除
$ sudo docker rm (CONTAINER IDまたはNAME)
5. Dockerイメージの一覧表示
$ sudo docker images
6. Dockerイメージのdocker hubへの登録
$ sudo docker push (docker-registry-username)/(docker-image-name)
dockerの後に続くコマンドもLinuxなど、馴染み深い単語が並んでいるため、イメージがつかみやすくなっています。
今回はDockerのイメージを持ってもらえるように、概念や完全仮想化との違いを中心にご説明しました。ただ、Dockerを理解するためには、インストールから実装・管理方法など、実務的な部分を理解する必要があります。
Dockerに興味がある、今後企業への導入を検討している方などは、もう少し深くDockerを理解していくと、また違う世界が見えてくるはずです。
最新情報・キャンペーン情報発信中