すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Docker および Docker Compose のインストールと使用

最終更新日:Sep 24, 2025

このトピックでは、様々な Linux ディストリビューションに Docker と Docker Compose をインストールする方法を解説します。アプリケーションとその依存関係をポータブルなコンテナにパッケージ化することで、デプロイを標準化し、マルチサービスアプリケーションの管理を簡素化できます。

Docker のインストール

Alibaba Cloud Linux 3

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker リポジトリを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # Docker と関連ソフトウェアパッケージをアンインストール
    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker パッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Alibaba Cloud Linux 3 用の dnf リポジトリ互換性プラグインをインストール
    sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Ubuntu

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker リポジトリを削除
    sudo rm -f /etc/apt/sources.list.d/*docker*.list
    # Docker と関連ソフトウェアパッケージをアンインストール
    for pkg in docker.io docker-buildx-plugin docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # apt パッケージインデックスを更新
    sudo apt-get update
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Debian

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker リポジトリを削除
    sudo rm -f /etc/apt/sources.list.d/*docker*.list
    # Docker と関連ソフトウェアパッケージをアンインストール
    for pkg in docker.io docker-buildx-plugin docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # apt パッケージインデックスを更新
    sudo apt-get update
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian $(lsb_release -cs) stable"
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Red Hat

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker 関連のソースを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # 古いバージョンの Docker と関連パッケージをアンインストール
    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/rhel/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Fedora

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker リポジトリを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # Docker と関連ソフトウェアパッケージをアンインストール
    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/fedora/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Anolis OS

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker 関連のソースを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # 古いバージョンの Docker と関連パッケージをアンインストール
    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Alibaba Cloud Linux 2

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker 関連のソースを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # 古いバージョンの Docker と関連パッケージをアンインストール
    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Alibaba Cloud Linux 2 用の yum リポジトリ互換性プラグインをインストール
    sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

CentOS 7.x

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker 関連のソースを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # 古いバージョンの Docker と関連パッケージをアンインストール
    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

CentOS 8.x

競合や互換性の問題を防ぐため、新しいバージョンの Docker をインストールする前に、既存の Docker コンポーネントをすべてアンインストールしてください。

古いバージョンの Docker のアンインストール

  1. 古い Docker バージョン、関連するソフトウェアパッケージ、リポジトリをアンインストールします。

    「package not installed」というメッセージは無視してかまいません。
    # Docker リポジトリを削除
    sudo rm -f /etc/yum.repos.d/docker*.repo
    # Docker と関連ソフトウェアパッケージをアンインストール
    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker をアンインストールしても、既存のイメージ、コンテナー、ボリューム、ネットワークは自動的に削除されません。デフォルトでは、Docker はこのデータを /var/lib/docker/ ディレクトリに保存します。すべてのデータを削除するには、このディレクトリを手動で削除する必要があります。

  1. Docker Community Edition をインストールします。

    Alibaba Cloud サーバーではない場合は、http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えてください。
    # Docker ソフトウェアパッケージリポジトリを追加
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    # Docker Community Edition、containerd.io コンテナーランタイム、Docker Buildx および Compose プラグインをインストール
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Docker を起動し、OSの起動時に起動時に自動起動するよう設定します。

    # Docker を起動
    sudo systemctl start docker
    # OSの起動時に Docker の自動起動を設定
    sudo systemctl enable docker

Docker を使用した Web アプリケーションのクイックデプロイ

  1. Web アプリケーションイメージをビルドします。

    # 最新の Nginx イメージをプル
    sudo docker pull nginx:latest
    # Nginx に基づいて "Hello World!" ページを提供する Dockerfile を作成
    sudo tee Dockerfile <<-'EOF'
    FROM nginx:latest
    RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
    EOF
    # イメージをビルドし、hello-world:latest としてタグ付け
    sudo docker build . -t hello-world:latest
  2. Web アプリケーションイメージを使用して、hello-world という名前のコンテナーを起動します。

    sudo docker run -d -p 80:80 --name hello-world hello-world:latest
  3. curl http://localhost を実行して、Web アプリケーションが正しく Hello World! を返すことを確認します。

Docker Compose のインストール

Docker Compose を使用すると、単一の YAML ファイルからマルチサービスアプリケーションを定義および管理できます。これは、サービス間に起動順序の依存関係がある場合に特に役立ちます。

Alibaba Cloud Linux、CentOS、Red Hat、Anolis、Fedora

sudo yum -y install docker-compose-plugin

Ubuntu、Debian

sudo apt-get -y install docker-compose-plugin

Docker Compose を使用したアプリケーションのデプロイ

  1. オーケストレーションファイル docker-compose.yaml を作成します。

    # オーケストレーションファイルを作成し、MySQL と WordPress サービスを追加
    sudo tee docker-compose.yaml <<-'EOF'
    version: '3.1'
    
    services:
      wordpress:
        image: wordpress
        restart: always
        ports:
          - "80:80"
        environment:
          # データベースホストアドレス
          WORDPRESS_DB_HOST: wordpress_db
          # データベースユーザー名
          WORDPRESS_DB_USER: wordpress
          # データベースパスワード
          WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
          # データベース名
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - wordpress:/var/www/html
    
      db:
        image: mysql:5.7
        restart: always
        container_name: wordpress_db
        environment:
          # データベース名
          MYSQL_DATABASE: wordpress
          # データベースユーザー名
          MYSQL_USER: wordpress
          # データベースパスワード
          MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD}
          # データベースの root ユーザーパスワード
          MYSQL_RANDOM_ROOT_PASSWORD: ${WORDPRESS_DB_PASSWORD}
        volumes:
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
    EOF
  2. WordPress サービスを起動します。コマンド内の <database_password> を実際の MySQL データベースのパスワードに置き換えてください。

    なお、Docker Compose V2 以降、コマンドはハイフン (docker-compose) ではなくスペース (docker compose) を使用する構文に変更されました。例: docker compose version
    # サービスコンテナを起動
    sudo env "PATH=$PATH" "WORDPRESS_DB_PASSWORD=<database_password>" docker compose -f docker-compose.yaml up -d
  3. ブラウザで http://<ECS インスタンスのパブリック IP アドレス> にアクセスして WordPress にアクセスします。

    セキュリティグループで、ポート 80 でのインバウンドトラフィックを許可していることを確認してください。

トラブルシューティング

Dockerの非rootユーザー権限設定

デフォルトでは、Docker コマンドには root 権限 (sudo を使用) が必要です。sudo なしで docker コマンドを実行し、最小権限の原則に従うには、ユーザーを docker グループに追加します。

  1. 現在のユーザーを docker グループに追加します。

    sudo usermod -aG docker $USER
  2. newgrp docker を実行してグループ設定の変更を適用すると、sudo なしで docker コマンドを実行できるようになります。

http://mirrors.cloud.aliyuncs.com にアクセスできない

  • 現象: アドレス http://mirrors.cloud.aliyuncs.com に到達できません。

  • 原因: ネットワークが不安定な可能性があります。

  • 解決策: http://mirrors.cloud.aliyuncs.comhttps://mirrors.aliyun.com に置き換えます。

    https://mirrors.aliyun.com を使用するには、インスタンスでパブリック帯域幅が有効になっている必要があります。手順については、「インターネット接続を有効にする」をご参照ください。

dnf config-manager コマンドの失敗

  • 現象: Linux インスタンスで dnf config-manager コマンドを実行すると、次のエラーが発生します:

    /usr/lib/python3/dist-packages/dnf/const.py:22: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives.
  • 原因: dnf パッケージが古くなっています。

  • 解決策: sudo dnf update dnfdnf パッケージを最新バージョンに更新してから、再度 docker のインストールを試みてください。

dnf install docker-ce コマンドの失敗

  • 現象: Linux インスタンスで dnf -y install docker-ce コマンドを実行すると、次のエラーが発生します:

    (8-9/12): docker-ce-24.0.7-1.el8.x86_64.rpm 38% [================- ] 8.2 MB/s | 38 MB 00:07 ETA
    The downloaded packages were saved in cache until the next successful transaction.
    You can remove cached packages by executing 'dnf clean packages'.
    Error: Error downloading packages:
    containerd.io-1.6.26-3.1.el8.x86_64: Cannot download, all mirrors were already tried without success.
  • 原因: ソフトウェアパッケージのキャッシュが古くなっています。

  • 解決策: sudo dnf clean packages を実行してパッケージキャッシュをクリアしてから、再度 docker のインストールを試みてください。

  • 現象: Linux インスタンスで dnf -y install docker-ce コマンドを実行すると、次のエラーが発生します:

    CentOS- Base                                                                                                                         0.0  B/s |   0  B     00:30    
    Errors during downloading metadata for repository 'base':
      - Curl error (6): Couldn't resolve host name for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirror.aliyuncs.com]
      - Curl error (28): Timeout was reached for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Connection timed out after 30000 milliseconds]
      - Curl error (6): Couldn't resolve host name for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirror.cloud.aliyuncs.com]
    Error: Failed to download metadata for repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
  • 原因: デフォルトの CentOS 8 リポジトリが期限切れです。

  • 解決策: 以下の手順で、期限切れの CentOS 8 リポジトリを Alibaba Cloud 提供の有効なリポジトリに置き換えます。

    # 期限切れのリポジトリファイルをバックアップ
    sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # Alibaba Cloud 提供の CentOS-Base.repo を /etc/yum.repos.d/ にダウンロード
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo
    # ECS インスタンス用の内部ミラーアドレスを使用するようにリポジトリを設定
    sudo sed -i 's/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/CentOS-Base.repo && sudo sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/CentOS-Base.repo && sudo sed -i 's/url_tmp/mirrors.aliyun.com/g' /etc/yum.repos.d/CentOS-Base.repo
    # 古いキャッシュをクリアして新しいキャッシュを生成
    sudo yum clean all && sudo yum makecache

    以上の手順を完了した後、再度 docker のインストールを試みてください。

参考資料