Ubuntu に Docker をインストールする方法

Docker エンジンは、amd64 (x86_64)、arm64、armhf、s390x、ppc64le などのアーキテクチャ上の 24.10 (Oracular)、24.04 LTS (Noble)、22.04 LTS (Jammy) を含む 64 ビット Ubuntu リリースをサポートします。 Docker はカーネルの iptables バックエンドに依存し、iptables-nft または iptables-legacy インターフェイスで動作します。を使用して直接作成されたルールnftこのツールは Docker ネットワーキングでは尊重されません。ホスト ファイアウォールを管理している場合、ufwまたはfirewalld、コンテナー ポートを公開すると、多くのホスト レベルのルールがバイパスされることに注意してください。許可/拒否ポリシーをDOCKER-USERチェーンを使用して、Docker のルールの前にフィルタリングを強制します。

インストールする前に、バージョンの衝突を避けるために、競合するディストリビューション パッケージを削除します。非公式パッケージのようなdocker.io、 遺産docker-compose、または以前にインストールされていたcontainerd/runcクリーンなセットアップを妨げる可能性があります。

ステップ 1:古いパッケージまたは競合するパッケージを削除します。

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove -y "$pkg"; done

ステップ 2:Ubuntu のリリースとアーキテクチャを確認して、正しいリポジトリを追加します。

source /etc/os-release && echo "Ubuntu codename: ${UBUNTU_CODENAME:-$VERSION_CODENAME}"; dpkg --print-architecture

方法 1: Docker の apt リポジトリから Docker エンジンをインストールする

この方法では、apt を介して最新の安定した Docker エンジンとプラグインをインストールするため、パッケージ マネージャーを介して将来の更新を簡単に行うことができます。

ステップ 1:必要なパッケージをインストールし、最新のキーリング パスを使用して Docker の GPG キーを追加します (非推奨を回避します)apt-key使用法)。

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

ステップ 2:Docker のリポジトリを追加し、パッケージ インデックスを更新します。

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

ステップ 3:Docker エンジン、CLI、containerd、Buildx、および Compose プラグインをインストールします。

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ステップ 4:サービスが実行されていることを確認し、テスト コンテナーを実行します。

sudo systemctl status docker --no-pager
sudo docker run hello-world

ステップ5:ユーザーが sudo を使用せずに Docker を実行できるようにします (オプションですが便利です)。これにより、アカウントがdockerグループには、Docker デーモンへの root 相当のアクセス権があり、信頼できるユーザーのみを追加します。

sudo usermod -aG docker $USER
newgrp docker  # or log out and back in
docker run hello-world

ステップ6:後で apt を使用してアップグレードします。環境に一致させる必要がある場合は、特定のバージョンに固定できます。

# Show available engine versions
apt-cache madison docker-ce | awk '{ print $3 }'

# Install a specific version (example version string)
VERSION_STRING=5:28.3.3-1~ubuntu.24.04~noble
sudo apt-get install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

方法 2: ダウンロードした .deb パッケージからインストールする (オフライン/手動アップグレード)

これは、ホストがリポジトリにアクセスできない場合、または再現可能なオフライン インストールが必要な場合に使用します。 Ubuntu のリリースとアーキテクチャに一致する .deb ファイルを手動でダウンロードします。

ステップ 1:ブラウザで Docker の Ubuntu リポジトリを参照し、以下でリリースを選択します。dists/。次に開きますpool/stable/<arch>/(例えば、amd64またはarm64)。

ステップ 2:同じバージョンに一致する次のパッケージをダウンロードします。

  • containerd.io_<version>_<arch>.deb
  • docker-ce_<version>_<arch>.deb
  • docker-ce-cli_<version>_<arch>.deb
  • docker-buildx-plugin_<version>_<arch>.deb
  • docker-compose-plugin_<version>_<arch>.deb

ステップ 3:パッケージをインストールしますdpkg。パスをファイルをダウンロードした場所に置き換えます。

sudo dpkg -i ./containerd.io_*_*.deb 
  ./docker-ce_*_*.deb 
  ./docker-ce-cli_*_*.deb 
  ./docker-buildx-plugin_*_*.deb 
  ./docker-compose-plugin_*_*.deb

ステップ 4:サービスが自動的に開始されなかった場合はサービスを開始し、テスト イメージで確認します。

以下も参照してください。Ubuntu で Wake-on-LAN を有効にする方法

sudo service docker start
sudo docker run hello-world

メンテナンスのヒント:アップグレードが必要な場合は、ダウンロードとインストールを繰り返します。手動インストールは apt の定期的なアップデートに従いません。

のスクリプトget.docker.comディストリビューションを検出し、Docker を非対話的にインストールします。これは迅速ではありますが、独自の意見があり、実稼働アップグレード用に設計されていません。

ステップ 1:スクリプトが何を行うかをプレビューします。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run

ステップ 2:スクリプトを実行して、最新の安定した Docker エンジン、containerd、および runc をインストールします。

sudo sh ./get-docker.sh

ステップ 3:非 root の使用を確認し、必要に応じて構成します。

sudo docker run hello-world
sudo usermod -aG docker $USER && newgrp docker

注意:スクリプトを再実行してアップグレードすると、依存関係が予期しないバージョンのままになる可能性があります。初回ブートストラップ後の継続的なアップグレードには、パッケージ マネージャーを使用してください。

オプション: Ubuntu に Docker デスクトップをインストールする (GUI)

Docker Desktop には、開発者ワークフロー用の GUI、Docker Engine、Docker CLI、Docker Compose V2、およびオプションの Kubernetes がバンドルされています。 Ubuntu 22.04、24.04、または x86‑64 上の最新の非 LTS が必要です。非 GNOME デスクトップにはインストールする必要がありますgnome-terminal統合端末をサポートします。大企業で商用利用する場合は、Docker の規約に従って有料サブスクリプションが必要になる場合があります。

ステップ 1:依存関係がきれいに解決されるように、Docker のパッケージ リポジトリ (方法 1 で使用したのと同じキーリングとリポジトリの手順) をセットアップします。

# If not already configured:
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

ステップ 2:Linux (amd64) 用の Docker Desktop .deb をダウンロードしてインストールします。

# Example for amd64; replace with the file you downloaded
sudo apt-get install -y ./docker-desktop-amd64.deb

ステップ 3:デスクトップを起動し、必要に応じて自動起動に設定します。

# Start for current user session
systemctl --user start docker-desktop

# Enable on login (optional)
systemctl --user enable docker-desktop

注:Docker Desktop は、ホスト上のローカル エンジンとの衝突を避けるために、専用の Docker コンテキストを作成します。サーバー環境の場合、通常、Docker Engine を単独で実行する方が簡単で、デスクトップへの依存を回避できます。

インストール後のチェックと一般的なタスク

Docker が動作することを確認します。テスト イメージを取得して実行すると、デーモン、ネットワーク、レジストリ アクセスが機能していることが証明されます。

docker run hello-world

簡単な Web コンテナを実行します。ホスト ポートをマッピングして、ポート公開が機能することを確認します。

docker run -d -p 8080:80 --name web nginx
docker ps

ブート時に開始します (サーバー上のエンジン):再起動後にデーモンが起動することを確認します。

sudo systemctl enable docker

トラブルシューティング

非推奨の apt-key 警告:上記のキーリング アプローチを使用します (/etc/apt/keyrings/docker.asc) の代わりにapt-key。これにより、警告が削除され、キーのスコープが Docker のリポジトリに限定されたままになります。

GPG キーのフェッチ エラー (ルート、プロキシ、または TLS の問題なし):アウトバウンド 443 接続、企業プロキシ、または DNS を確認します。プロキシの背後にある場合は、設定しますhttps_proxy/http_proxyあなたの殻とのためにcurl。到達できることを確認してくださいhttps://download.docker.com/シンプルなcurl -I

docker: command not found:CLI がインストールされていないか、PATH。方法 1 からパッケージを再インストールするか、確認してください/usr/bin/docker存在します。

Docker デーモンに接続できません:サービスが実行中であり、次の状態であることを確認してください。dockersudo なしで実行する場合はグループ。

sudo systemctl status docker
sudo systemctl start docker
sudo usermod -aG docker $USER && newgrp docker

イメージ プルがハングするか、TLS ハンドシェイク タイムアウトで失敗します。インターネット ルーティング、DNS、または企業プロキシ構成を確認してください。スキューが大きいと TLS が中断される可能性があるため、システム時刻 (NTP) を同期してください。次のような軽量イメージで再テストします。hello-worldレジストリ アクセスの問題を分離します。

UFW/ファイアウォールと公開ポート:Docker の nat/forward ルールは、公開ポートのホスト ファイアウォール ポリシーをバイパスできます。許可/拒否ルールをDOCKER-USERDocker ルールの前に評価されるようにチェーンします。また、システムが raw ではなく、Docker がサポートする iptables インターフェイス (nft またはレガシー) を使用していることを確認してください。nftルール。

systemd を使用しない WSL:「システムは systemd で起動されていません」と表示された場合は、Docker Desktop for Windows を介して Docker を管理するか、WSL ディストリビューション設定で systemd を有効にしてください。直接systemctlコマンドは systemd なしでは機能しません。

Docker エンジンを完全にアンインストールする

ステップ 1:パッケージを削除します。

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

ステップ 2:Docker データ ディレクトリを削除します (これにより、イメージ、コンテナー、ボリュームが削除されます)。

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

ステップ 3:再インストールしない場合は、リポジトリとキーリングを削除します。

sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.asc

Docker をインストールして検証すると、すぐにコンテナーを起動し、必要に応じて Compose または Buildx を使用してコンテナーを管理できます。システム時刻を正確に保ち、​​ファイアウォールの動作を監視し、apt を介して更新してセキュリティ修正を最新の状態に保ちます。

Related Posts