初心者向け:Dockerの基本機能とその使い方

Docker

Dockerは、ソフトウェアの開発・運用を効率化するためのツールです。
初心者にとっても理解しやすいように、Dockerの基本機能やその使い方についてわかりやすく解説します。

Dockerとは何か?

Dockerは、コンテナ技術を利用してアプリケーションを分離して実行するためのツールです。

Dockerのイメージ
同じコンテナを使うことで、環境の違いをなくすことができます。

コンテナとは?

コンテナとは、アプリケーションとその依存関係をまとめた軽量な仮想環境のことです。
従来の仮想マシン(VM)と比べて以下の利点があります。

仮想マシン vs コンテナ
コンテナはOSごとではなく、アプリケーションに必要な部分だけを実行します。

仮想マシン(VM)の場合

ハイパーバイザー: 仮想マシンを管理するソフトウェア。
ゲストOS: 各仮想マシンが独自に持つオペレーティングシステム。
各仮想マシンは完全に独立した環境を提供しますが、OSごと仮想化するためリソース消費が大きいです。

コンテナの場合

Dockerエンジン: コンテナの作成・管理を行う基盤。
コンテナは、ホストOSのカーネルを共有しつつ、各アプリケーションが独立した環境を持ちます。
ゲストOSが不要なため、仮想マシンに比べて軽量で高速です。

仮想マシンとコンテナの比較表

項目仮想マシン(VM)コンテナ
OSの重複各VMにゲストOSが必要ホストOSを共有
リソース消費高い低い
起動時間数分~数十秒数秒
用途フル仮想化環境が必要な場合軽量な分離環境が必要な場合
VMware, VirtualBoxDocker

Dockerの主な機能

イメージ管理機能

Dockerイメージは、アプリケーションの動作に必要な設定やファイルをまとめたものです。

Dockerイメージの概要
イメージは「アプリの設計図」のようなものです。

Dockerイメージの詳細

Dockerイメージは、コンテナを実行する際に展開され、各レイヤーが効率的に利用されます。

動作フロー

コンテナ管理機能

コンテナは、イメージを基に作成される実行環境です。

コンテナの動作イメージ
1つのイメージから複数のコンテナを作成できます。

ネットワーキング機能

コンテナには、コンテナ同士や外部と通信するためのネットワーク機能があります。

ブリッジ機能
Dockerエンジンが提供する仮想ネットワーク(ブリッジネットワーク)を使って、コンテナ間の通信が行われます。
特徴:
外部との通信にはポートフォワードを設定する必要があります。
同じブリッジネットワークに接続したコンテナ同士は通信可能。

ポートフォワード機能
コンテナが (Webサーバー) 外部と通信する場合

localhost:8080 にアクセスすると、コンテナ内のポート80に接続できます。

データの永続化

データの永続化とは、プログラムやアプリケーションが終了した後でもデータを保持し、再びアクセス可能な状態にすることを指します。
Dockerのコンテナでは、基本的にコンテナが削除されるとその中のデータも失われます。
この一時的なデータ保存を補うための仕組みがデータの永続化です。

データを永続化するためにボリューム (Volume)を使用します。

ボリューム (Volume)の詳細

Dockerが管理する専用のデータ保存領域を使用する方法。

  • 特徴:
    • コンテナが削除されてもボリュームは残る。
    • 複数のコンテナ間でデータを共有可能。
    • ホストシステムに依存せず、柔軟性が高い。

ボリュームの動作図

使用例: ボリュームを作成してマウントする。

上記では、my_volume という名前の永続的なデータ領域をローカルPC上に作成し、コンテナに作られる/app/data とマッピングしています。

Dockerのメリット

環境の再現性

同じイメージを使うことで、開発環境と本番環境を統一できます。

環境の再現イメージ
どの開発者も同じ環境を使えます。

実際にDockerを使ってみよう

Dockerのインストール

公式サイトからDocker Desktopをダウンロード・インストールするだけで簡単に始められます。

インストールの流れ

簡単なコマンド例

Hello, World! を表示

docker run hello-world
イメージがローカルに存在しない場合は、Docker Hub(公式リポジトリ)からイメージをダウンロードし、イメージをもとに新しいコンテナを作成・実行します。
Dockerのインストールと基本的なセットアップが正しく行われていることを確認するためのテストとしてよく使用されます。

Nginxを起動

docker run -d -p 8080:80 nginx
Nginx(ウェブサーバー)をバックグラウンドで実行し、ローカルマシンのポート8080からコンテナ内のポート80に接続する設定を作成します。

  • docker run
    Dockerコンテナを作成して実行するための基本コマンド。
  • -d(デタッチモード)
    コンテナをバックグラウンドで実行します。
  • -p 8080:80(ポートマッピング)
    ホストマシン(ローカル)のポート8080をコンテナ内のポート80にマッピングします。
  • ホスト側のポート: 8080
    コンテナ側のポート: 80(NginxがデフォルトでリッスンするHTTPポート)

これにより、ホストマシンのhttp://localhost:8080にアクセスすることで、コンテナ内のNginxが提供するウェブページを表示できます。

まとめ

Dockerを使うことで、効率的にアプリケーション開発が進められます。
初心者はまず、シンプルなコマンドを試しながらDockerの基本を学び、実際の開発に応用してみましょう。

タイトルとURLをコピーしました