全部產品
Search
文件中心

Elastic Compute Service:安裝Docker

更新時間:Oct 31, 2024

Docker是一個開放平台,用於開發、發布和運行應用程式。如果您需要在執行個體上安裝和使用Docker,可以參考本文,文中將介紹如何在執行個體上部署Docker以及一些基本的操作方法。

安裝Docker

Alibaba Cloud Linux 3

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo dnf -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      sudo dnf config-manager --add-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
  3. 安裝Alibaba Cloud Linux3專用的dnf源相容外掛程式。

    sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
  4. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  6. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Alibaba Cloud Linux 2

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo yum -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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
  3. 安裝Alibaba Cloud Linux2專用的yum源相容外掛程式。

    sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
  4. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  6. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

CentOS 7.x

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo yum -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

CentOS 8.x

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo dnf -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      sudo dnf config-manager --add-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
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Ubuntu

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與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預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo apt-get update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
      sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
      sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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 | 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"
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Debian

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與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預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo apt-get update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
      sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | apt-key add -
      sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
      sudo apt-get update
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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 | 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"
      sudo apt-get update
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Fedora

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo dnf -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo dnf -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/fedora/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      sudo dnf config-manager --add-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
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Red Hat

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo dnf -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

Anolis OS

在安裝最新版本的Docker之前,您可以使用docker -v命令來檢查當前的Docker版本。如果提示沒有此命令,說明您還未安裝Docker,若已安裝舊版本的Docker,則需先卸載及其相關組件。

卸載舊版本的Docker

  1. 執行以下命令來卸載舊版本的Docker和相關的軟體包,這個命令會幫您卸載掉所有列出的與Docker相關的程式。

    說明

    如果系統提示說部分軟體包沒有安裝,說明您還未安裝此軟體包。

    sudo yum -y remove \
    docker-ce \
    containerd.io \
    docker-ce-rootless-extras \
    docker-buildx-plugin \
    docker-ce-cli \
    docker-compose-plugin
  2. Docker預設儲存位置是/var/lib/docker/,卸載Docker時,鏡像、容器、儲存卷和網路不會被自動刪除。如果您想要刪除這些資料,需要手動刪除。

  1. 更新您的包管理工具。

    sudo yum -y update
  2. 添加阿里雲源到您的執行個體中,這個源包含Docker軟體包,方便您使用命令來安裝和更新Docker。

    • 如果您的執行個體網路可以訪問公網。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • 如果您的執行個體網路無法訪問公網,使用VPC網路訪問地址。

      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
  3. 安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和編排工具的外掛程式。

    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 啟動Docker並設定Docker守護進程在系統啟動時自動啟動,這樣可以確保每次系統啟動時,Docker服務也會自動啟動。

    說明

    如果您的systemctl命令執行異常,請參見在Linux執行個體中執行systemctl命令報錯怎麼辦?

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 通過查看Docker版本命令,驗證Docker是否安裝成功。

    sudo docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。image

建立簡單Web程式鏡像

接下來,我將為您示範使用Nginx鏡像作為基礎鏡像,建立簡單Web程式鏡像。

前期準備

您的執行個體可以串連公網,使用docker pull命令擷取Nginx最新版鏡像。

sudo docker pull nginx:latest

建立鏡像

  1. 您需要建立一個名為Dockerfile的檔案。Dockerfile是一個特殊的文字檔,它用來定義如何構建一個 Docker 鏡像。這個檔案會告訴Docker需要使用哪個基礎鏡像,以及在這個基礎鏡像上需要安裝哪些軟體和進行哪些配置。

    sudo touch Dockerfile
  2. 編輯建立的Dockerfile並新增內容。

    FROM nginx:latest
    RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
  3. 使用Dockerfile構建您的鏡像。

    sudo docker build . -t hello-world:latest
  4. 為您的新鏡像建立容器,並且命名容器名稱為hello-world

    sudo docker run -d -p 80:80 --name hello-world hello-world:latest
  5. 驗證您的鏡像,執行命令curl http://localhost,輸出hello world!

常見問題

Linux ECS執行個體中執行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 dnf來更新dnf軟體包到最新狀態,然後再嘗試安裝docker。

Linux ECS執行個體中執行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軟體源。

# 備份到期軟體源。
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下載阿里提供的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即可。

說明

如果您不想使用阿里提供的可用源,您可以自行注釋掉原有/etc/yum.repos.d/CentOS-Base.repo中停用軟體源地址,然後再嘗試安裝docker

相關文檔

  • Docker的更多使用方法,請參見Docker官方文檔

  • 按照本文檔中的步驟操作後,Docker Compose將預設安裝到您的執行個體中。若在操作過程中發現Docker Compose未成功安裝,請參見Docker官方安裝文檔

  • 阿里雲推出了製品中心,為開發人員免費提供了來源於阿里雲官方、龍蜥社區的安全可信容器基礎鏡像。

  • 您可以使用企業P2P加速功能提升鏡像拉取速度。具體操作,請參見在其他容器環境中使用P2P加速

  • 您可以在Docker中配置CLI來管理您的阿里雲資源。具體操作,請參見在Docker中配置阿里雲CLI