
Dockerは、アプリケーションを動かすために必要なもの(プログラム、ライブラリ、設定など)をひとまとめにして、どこでも同じように動かせるようにする技術です。これをコンテナと呼びます。
<aside> 🤖
教えてGemini先生!
「お弁当箱で例えると…」
Dockerコンテナは「お弁当箱」のようなものです。
お弁当箱(コンテナ)の中に、ご飯やおかず(アプリケーションや必要なファイル)が全て詰まっています。
これさえあれば、教室でも、公園でも、会社でも(どんなサーバ環境でも)、同じ味(同じ動作)を楽しむことができます。
</aside>
従来の開発では、「開発者のPCでは動いたのに、本番サーバでは動かない」というトラブルがよくありましたが、Dockerを使うことでこの問題を解決できます。
<aside> 💡
コンテナ(Container)
OSの中に作られた、隔離されたアプリケーション実行環境のことです。
仮想マシンのようにOSごと丸々作るのではなく、必要な部分だけをパッケージ化するため、非常に軽量で高速に動作します。
</aside>
| 比較項目 | 仮想マシン(Virtual Machine) | Dockerコンテナ |
|---|---|---|
| イメージ | 一戸建ての家 | マンションの一室 |
| 仕組み | コンピュータの中に、別のコンピュータ(ゲストOS)を丸ごと仮想的に作る。 | OSの機能(カーネル)はホストと共有し、アプリの部分だけを隔離する。 |
| サイズ | 大きい(数GB〜) | 小さい(数MB〜) |
| 起動速度 | 遅い(OSの起動から始まるため数分) | 爆速(アプリの起動だけなので数秒) |
UbuntuなどのLinux環境へのインストール手順です。公式のリポジトリを設定してインストールします。
# 1. 競合する古いパッケージの削除
for pkg in [docker.io](<http://docker.io>) docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 2. 公式GPGキーの追加
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL [<https://download.docker.com/linux/ubuntu/gpg>](<https://download.docker.com/linux/ubuntu/gpg>) -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 3. リポジトリの追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] [<https://download.docker.com/linux/ubuntu>](<https://download.docker.com/linux/ubuntu>) \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 4. インストール
sudo apt-get install docker-ce docker-ce-cli [containerd.io](<http://containerd.io>) docker-buildx-plugin docker-compose-plugin
動作確認
# hello-worldコンテナを動かしてみる
sudo docker run hello-world
「Hello from Docker!」というメッセージが表示されれば成功です。
Raspberry Pi OS(64-bit推奨)でもDockerは動きます。公式が提供している「便利スクリプト(Convenience Script)」を使うのが最も簡単で推奨される方法です。
# 1. インストールスクリプトをダウンロード
curl -fsSL [<https://get.docker.com>](<https://get.docker.com>) -o [get-docker.sh](<http://get-docker.sh>)
# 2. スクリプトの実行
sudo sh [get-docker.sh](<http://get-docker.sh>)