Docker入門(第1回)|初心者向けに概要や基本コマンドを解説

  • 2022.04.21
       
Docker入門|使い方と基本コマンド

Dockerとは?

Docker とは、 Docker 社によって開発されたコンテナ型の仮想環境でアプリケーションを作成・配布・実行するためのプラットフォームで、サーバの起動方法がシンプルで起動や処理も速いという特徴があります。
従来では、企業がシステム構築をする際、1台のサーバを設置し、その上に1つのシステムを作る「オンプレミス型」が主流でしたが、ベンダーが保有するサーバを借りて構築する「パブリッククラウド」や1台のサーバ上に複数のシステムを構築する「プライベートクラウド」が登場するなど、クラウド化が進みました。そして、昨今では、次のインフラの選択肢として「Docker」という新たな仕組みに注目が集まっています。

「コンテナ型」の「仮想化」プラットフォーム

「コンテナ型」「仮想化」プラットフォーム、Dockerの登場によって、従来の作業や管理方法が激変し、開発などで発生するさまざまな作業の自動化が可能になりました。

この説明ではわかりにくいと思うので、掘り下げていきましょう。

まず、「コンテナ型」というのは貨物輸送に用いるコンテナに由来しています。
貨物輸送の「コンテナ」はさまざまな業者が物を運ぶにあたって扱いやすいよう、箱の大きさが決まっているように、規格が明確に定められていますよね。
Dockerにおける「コンテナ」にも同じような意味合いがあり、アプリケーションやサーバを「コンテナ」という規格が定まった容器に収納することで、扱いやすくしています。

Dockerの仕組みを理解するには、「仮想化」という概念が重要になってきます。
10年ほど前は、1台のサーバに1つのOSをインストールして利用するのが一般的でした。
対して「仮想化」は、1台のサーバに仮想化ソフトをインストールすることで複数のサーバとして利用することができます。

しかし、「仮想化」といってもPCのハードウェア全体を仮想化することで、OSやアプリケーションなどを動作させる「完全仮想化」の仮想マシンと違い、「コンテナ型」はコンテナがホストOSのカーネルを利用することからメモリやディスクの使用量が少なく、軽量で高速な動作が可能です。
詳しくは次項で説明していきます。

ハイパーバイザー型との違い

※コンピュータの中にある別のコンピュータを動かす際に、元のコンピュータのOSをホストOS、コンピュータの中で動いているコンピュータのOSをゲストOSと呼ぶ。

仮想環境は目的によって使い分けるのが一般的です。
どれもハードウェアを仮想化することで、複数のサーバを構築できるという仕組みは変わりません。
では、コンテナ型の仮想環境はホスト型やハイパーバイザー型の仮想技術とどう違うのでしょうか。
それぞれ見ていきましょう。

ホスト型
ホスト型はOS上に仮想化ソフトウェアをインストールし、そのうえで仮想マシンを稼働させる方式で、代表的なものにVMware Playerがあります。ホスト型では既存のハードウェアにインストールしてしまえばすぐに利用できるという手軽さがありますが、ハードウェアへアクセスする際、ホストOSを経由せねばならず、負荷がかかり、処理時間が長くなってしまいます。カスタマイズ性に優れているので、軽い実験など、個人で動かす分にはホスト型が向いているでしょう。

ハイパーバイザー型(ベアメタル型)
ハイパーバイザー型は、サーバに直接インストールすることで仮想マシンを稼働させる方式で、代表的なものにHyper-Vなどがあります。ホストOSが必要なく、ハードウェアを直接制御できるため仮想マシンをスムーズに作動させられます。また、ハイパーバイザーには複数の仮想マシンを効率よく稼働させるためのさまざまな仕組みが搭載されています。ただ、ホストOSがない分、高度なスキルが必要です。リソース効率が高いので、業務用など、規模が大きい場合に用いることが多いです。

コンテナ型
コンテナ型は、OS上に「コンテナエンジン」という仮想化ツールをインストールし、コンテナイメージを作成することでコンテナを仮想化する方式です。ゲストOSを必要としない分、少ないリソースで済み、コストパフォーマンスにも優れていますが、仮想技術としては後発ということもあり、構築できるベンダーや管理ツールが少ないという現状はあります。

ホスト型やハイパーバイザー型といった仮想化環境とコンテナ型の仮想化環境の最大の違いはゲストOSの有無です。
前者で仮想サーバを作った場合、それぞれのゲストOSを独立したサーバとして起動させるので、アプリの構築・運用における自由度が高くなりますが、毎回OSを起動しなければいけないので物理環境よりも性能が劣る可能性があります。

一方、コンテナ型でコンテナを作った場合、各コンテナが1つのOSを共有しているため、OSに関して不自由ではありますが、メモリやディスクといったリソースやユーザやプロセスなどをサーバごとに隔離できるため、高速起動・実行できます。

Dockerを使うメリット

メリット①:システム導入までの手間が省ける
OSは既に共有して利用しているので、設定を省くことができ、システム構築に必要な最低限のプログラムのみのインストールですぐに使い始めることができます。

メリット②:起動時間の短縮と処理速度の向上
OSが既に立ち上がっている分、サーバーの起動時間を短縮できます。また、最小限のリソースの使用量で済むため、サーバーへの負荷が低く、1度に多くのプログラムを処理できます。

メリット③:コンテナ設定の再利用が可能
Dockerで一度作成したコンテナは、他のコンテナに適用させることで再利用が可能です。
リソースを拡大したい時や検証したい時などに、すぐに同じ環境設定のコンテナを準備することができます。

多種多様な開発・検証環境が必要になってきた現在の製品やサービスの開発では、既存のものにおいても保守・改善に関して開発環境が必要です。
より一層進んでいく、グローバル化によって海外を含めた開発環境の共通化はとても重要な課題となってきてきました。
OS内に独立した仮想環境(軽量なコンテナ)を複数生成することができるDockerによって、OS内に多くの実行環境を構築でき、多種多様の開発環境や検証環境の変更にも柔軟に対応できます。また、独立環境のコンテナを生成することでファイルやバージョン、設定やポートの競合回避もでき開発環境の共通化を推進できます。

Dockerの使い方や基本コマンド

ここからは、Docker の操作の具体的なコマンドを通して使い方を紹介します。
「docker ~」という並び順でシンプルなコマンドが多いのでイメージをつかみやすいでしょう。

インストール

ご利用のOSに合わせて公式サイトからインストーラーを入手します。
Windowsの場合:「Get Docker Desktop for Windows」
Macの場合:「Get Docker Desktop for Mac」

動作確認

Macの場合はターミナル、Windowsの場合はコマンドラインを開きコマンドを実行していきましょう。

バージョンの確認

現在インストールされているDocker Engineのバージョン情報などが表示されます。

動作しているコンテナの確認

動作しているコンテナが一覧表示されます。
インストール直後は動作しているコンテナが存在せず、何も表示されない場合があります。

現在取得済みのイメージの一覧表示

現在取得しているイメージを一覧表示させ、このイメージを元にコンテナを作成できます。

Dockerの実行

「Hello from Docker!」と表示されれば成功で、Dockerコンテナの動作は完了したことになります。

基本コマンド一覧

イメージに関するコマンド

コンテナに関するコマンド

その他

オプション

最後に

今回は Docker の入門編ということで具体的なコマンドを交えて使い方を紹介しました。
Docker は扱いやすく、今後もどんどん利用されていくと考えられます。
難しいと考えられがちですが、シンプルなアーキテクチャですので、慣れてしまえば便利さがわかるでしょう。
Docker を運用するまでいかなくとも、常用する基本コマンドなどの知識を持っておくとよいでしょう。

Dokcer に触ったことのない方向けの記事も公開しておりますので、よろしければこちらもご覧ください。

Docker入門(第2回)|Docker-Composeで環境構築する
     

Dockerカテゴリの最新記事