Dockerは、コンテナ型仮想化を実現するオープンソースのプラットフォームです。アプリケーションとその実行環境をコンテナとしてパッケージ化し、どのような環境でも同じように動作させられます。
軽量かつ高速に動作するのが特徴で、開発効率の向上やコスト削減が期待できます。
本記事では、Dockerの概要とメリットを初心者向けに説明し、Windows環境へのインストール方法と基本的な使用方法も解説します。
Dockerとは
Dockerは、オープンソースのプラットフォームで、コンテナ型仮想化技術を実現しており、異なる環境でアプリケーションを簡単に動かせる便利なツールです。
仮想化とは、物理的なハードウェアリソースを複数の仮想環境に分割して利用する技術で、サーバー運用を効率化します。
コンテナとは、アプリケーションとアプリケーションの実行に必要な環境をひとまとめにしたものです。つまり、Dockerを使えば、どのような環境でも同じようにアプリケーションを実行できます。
従来は、ホスト型やハイパーバイザー型などの仮想マシンが一般的でした。
しかし、仮想マシンはゲストOSを立ち上げるため、リソースを多く消費します。それに対して、DockerはホストOSの上でコンテナを直接実行するため、より軽量でありながら、必要なライブラリやアプリケーション設定だけを含むため、高速に動作します。
Dockerのしくみ
Dockerでは、アプリケーションの構成情報を書いたファイルを使って、簡単に環境を作れます。構成情報のファイルを「Dockerfile」と呼びます。
Dockerfileをもとに「Dockerイメージ」と呼ばれるパッケージができます。イメージを使って、いろんなコンピューターで同じ環境を作れます。イメージを使って作られた環境が「コンテナ」です。
Dockerには、コンテナを作ったり管理したりする「Dockerデーモン」と、命令を送るための「Dockerクライアント」があります。
仮想マシンとの違い
仮想マシンは、1つの大きなコンピューター(ホスト)の上に、いくつかの小さなコンピューター(ゲスト)を作ります。各ゲストは自分専用のOSやソフトウェアを持ち、ホストとは独立して動きますが、仮想マシンの方法は少し重くて起動に時間がかかります。
一方、Dockerは1つのホストのなかで複数の部屋(コンテナ)を作ります。部屋ごとに仕切りがあるため、他の部屋とは独立して動けますが、机や壁などは共有するので、起動が早くて重くなりません。
仮想マシン | Docker | |
ゲストOS | 必要 | 不要 |
カーネル | ゲストOS毎 | 共有 |
オーバーヘッド | 大きい | 小さい |
起動時間 | 遅い | 速い |
Dockerは仮想マシンよりも軽くて速いことから、アプリケーション開発やデプロイなどで広く使われています。
Dockerの4つの特徴
Dockerの特徴を4つのポイントで解説します。
ゲストOSが不要
Dockerは、仮想マシンとは異なりゲストOSを必要としません。
コンテナ内で動作するアプリケーションは、ホストOSのカーネルを直接利用するため、オーバーヘッドが少なく、リソースを効率的に使えます。
また、ゲストOSのインストールや設定が不要なので、コンテナの起動も高速におこなえます。
各種環境設定をコード化して管理
Dockerでは、Dockerfileと呼ばれるファイルにコンテナの構成情報を記述します。
Dockerfileには、OSやミドルウェア、ライブラリなどの環境構築手順を記載するため、環境構築の自動化が可能になります。
また、DockerfileをGitなどでバージョン管理すれば、環境構築手順の変更履歴も追跡できます。
開発・検証・本番の実行が可能
Dockerコンテナは、開発環境、検証環境、本番環境で同じように動作します。コンテナ化されたアプリケーションは、環境間の差異によるエラーを防ぎ、スムーズな移行を実現します。
また、開発者は自身の端末で本番環境と同等の環境を簡単に構築でき、開発効率の向上にもつながります。
複数のコンテナの起動が可能
Dockerでは、複数のコンテナを同時に起動し、連携させることができます。例えば、WEBサーバーとDBサーバーを別々のコンテナで起動し、それらを連携させてアプリケーションを動作させるなどが可能です。
また、Docker Composeを使えば、複数のコンテナの起動や停止を一括で管理できるため、複雑なシステムの運用も容易になります。
Dockerで環境開発するメリットは?
Dockerを使うと、従来の開発環境に比べてさまざまなメリットがあります。
開発作業の効率化
Dockerでは、マシンへの負荷が軽く、コンテナの起動や停止が高速におこなえます。また、Dockerfileにコードを書くだけで、開発環境を簡単に構築できるため、スクラップ&ビルドが容易です。
さらに、開発、検証、本番環境を同一のDockerコンテナ内に作れるため、環境の違いによる予期せぬエラーの発生を防げます。
上記のように、Dockerを使えば従来の方法よりも快適に開発作業を進められ、作業効率の向上が期待できます。
コストの削減
今までは、WEBサービスやアプリケーションを開発する際、OSやサーバーソフト・データベースの組み合わせ毎に、複数のサーバーを用意していました。
しかしDockerを活用すれば、単一のマシン上に複数の環境を構築できるため、複数台必要だったサーバーやインフラ費用を抑えられます。
また、Dockerfileを作成しておけば必要な環境をすぐに構築できるため、環境構築にかかる時間を短縮でき、人件費の削減にもつながります。
開発環境の共有が容易
Dockerでは、Dockerfileを共有するだけで、誰でも同じ開発環境を簡単に再現できます。しかも、Dockerfileはテキストファイルなので、容量が小さく共有は容易です。
そのため、開発メンバー間で環境を共有したり、バージョン管理システムで環境を一元管理したりなどが簡単におこなえます。環境の共有が容易なので、メンバーの追加なども柔軟に対応できるようになります。
Dockerをインストールする方法
DockerはLinux・macOS・Windowsなどさまざまな環境でインストールでき、コンテナを動作させられます。
以下では、Windows 11環境にDockerをコマンドラインからインストールする手順を説明します。
Docker Desktop for Windows のインストール
Docker Desktop for Windowsは、WindowsでDockerを使うために必要なツール群をまとめたパッケージです。以下の手順でインストールします。
- ・WSLのインストール
- ・Docker公式サイトからインストーラーをダウンロードします。
- ・ダウンロードしたインストーラーを実行します。
- ・インストールが完了したら、Docker Desktopを起動します。
WSLが未導入の場合、コマンドプロンプトを管理者モードで開き、下記を実行してください。Hyper-Vが導入済みの場合、wslの手順は不要です。
wsl –install
上記を実行したら、一度パソコンを再起動してください。
次に、Docker公式サイトにアクセスし「Download for Windows」をクリックして、インストーラーをダウンロードします。本項では、ユーザーのダウンロードフォルダにダウンロードしたものとして解説します。
コマンドプロンプトを開き、下記のコマンドを実行します。
cd Downloads
“Docker Desktop Installer.exe” install
インストーラーの指示に従い、インストールを進めます。
インストールが完了したら、スタートから「Docker Desktop」を検索して起動します。
インストール完了と動作の確認
Docker Desktopのインストールが完了したら、動作確認をしましょう。新たにコマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します。
docker -v
正常に起動していれば、Dockerのバージョン情報が例えば次のように表示されます。
Docker version 26.0.0, build 2ae903e
起動の確認
- ・タスクトレイアイコンからQuick Start Guideを選ぶ
- ・画面の指示どおりに操作する
Docker Desktopを起動すると、 タスクトレイにDockerアイコンが現れます。右クリックで「Quick Start Guide」を選ぶことで、Dockerの使用法のチュートリアルがスタートします。
以上で、Dockerを使って開発をおこなう準備が整いました。
Dockerを実行する方法
以下では、Dockerを使ってコンテナで作業する一連の手順を段階的に説明します。
Dockerイメージの取得
- ・Docker Hubでイメージを探す
- ・docker pullコマンド:イメージを取得する
Dockerイメージとは、コンテナを作成するための雛形のようなものです。公式のDockerイメージは、Docker Hubのサービスで提供されています。
必要なイメージを検索し、docker pullコマンドを使ってダウンロードします。
例えば、Nginx(WEBサーバー)のイメージを取得する場合は、以下のコマンドを実行します。
docker pull nginx
取得したイメージは、docker imagesコマンドで確認できます。
コンテナの作成
- ・docker runコマンド:コンテナを作成・起動する
取得したイメージからコンテナを作成するには、docker runコマンドを使います。runコマンドには、複数のオプションがあります。
例えば、Nginxのコンテナをwebserverの名前で作成し、ホストの80番ポートをコンテナの80番ポートにマッピングする場合は、以下のコマンドを実行します。
docker run -d -p 80:80 –name webserver nginx
起動したら、WEBブラウザーでhttp://localhostにアクセスすると、Welcome to nginx!の表示を確認できます。
コンテナ内での作業
- ・docker execコマンド:コンテナ内のプログラムを実行する
作成したコンテナ内で作業をおこなうには、docker execコマンドを使います。
例えば、名前がwebserverのコンテナ内でbashシェルを起動する場合は、以下のコマンドを実行します。
docker exec -it webserver /bin/bash
コンテナ内での作業が終わったら、exitコマンドでシェルを終了します。
コンテナの停止と起動
- ・docker stopコマンド:コンテナを停止状態にする
- ・docker startコマンド:コンテナを再起動する
コンテナを停止するには、docker stopコマンドを使います。
docker stop webserver
停止した既存のコンテナを再び起動するには、docker startコマンドを使います。
docker start webserver
コンテナのイメージ化
- ・docker commitコマンド:コンテナの現状をイメージ化する
変更を加えたコンテナを新しいイメージとして保存するには、docker commitコマンドを使います。
docker commit webserver webserver:0.0
上記により、名前がwebserver:0.0のイメージが作成されます。
不要なコンテナ・イメージの削除
- ・docker rmコマンド:コンテナの削除
- ・docker rmiコマンド:イメージの削除
不要なコンテナを削除するには、docker rmコマンドを使います。
※削除する前にコンテナを停止する必要があります。
docker rm webserver
不要なイメージを削除するには、docker rmiコマンドを使います。
docker rmi webserver:0.0
以上が、Dockerを実行する一連の手順です。
まとめ
Dockerは、コンテナ型仮想化を実現するオープンソースプラットフォームで、従来の仮想マシンよりも軽量かつ高速で、Dockerfileによる環境構築の自動化や開発環境の共有が容易などのメリットがあります。
クラウドコンピューティングとも縁の深い、コンテナ仮想化技術をお手元のパソコンにDockerを導入して試してみてはいかがでしょうか。
フリーランスの案件をお探しの方はTechReachにご相談ください。
TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。
そのため、高単価・高品質な数多くの案件紹介が可能です。
また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。
TechReachを活用して、理想の案件を見つけましょう!