全部產品
Search
文件中心

Elastic Compute Service:安裝並使用Docker和Docker Compose

更新時間:Sep 16, 2025

為不同Linux發行版安裝Docker與Docker Compose。可將應用及依賴打包成可移植容器,實現標準化部署並簡化多服務管理。

安裝Docker

Alibaba Cloud Linux 3

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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 Linux3專用的dnf源相容外掛程式
    sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
    #安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Ubuntu

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://mirrors.aliyun.com
    #更新包管理工具
    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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Debian

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://mirrors.aliyun.com
    #更新包管理工具
    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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Red Hat

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Fedora

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Anolis OS

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

Alibaba Cloud Linux 2

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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 Linux2專用的yum源相容外掛程式
    sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
    #安裝Docker社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

CentOS 7.x

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

CentOS 8.x

安裝新版Docker前,卸載所有已安裝的Docker組件。可以避免潛在的衝突和相容性問題。

卸載舊版本的Docker

  1. 卸載舊版Docker、相關軟體包和軟體源。

    忽略提示軟體包未安裝的訊息。這說明該軟體包未安裝。
    #刪除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不會自動移除鏡像、容器、儲存卷和網路。這些資料預設儲存在/var/lib/docker/目錄。需手動刪除此目錄。

  1. 安裝Docker社區版本。

    非阿里雲伺服器,需將http://mirrors.cloud.aliyuncs.com替換為https://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社區版本,容器運行時containerd.io,以及Docker構建和Compose外掛程式
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動Docker並設定開機自啟。

    #啟動Docker
    sudo systemctl start docker
    #設定Docker守護進程在系統啟動時自動啟動
    sudo systemctl enable docker

使用Docker快速部署web應用

  1. 構建Web程式鏡像。

    #拉取Nginx鏡像
    sudo docker pull nginx:latest
    #建立Dockerfile設定Nginx作為基礎鏡像,並在Web伺服器的根目錄建立一個顯示Hello World!的index.html檔案。
    sudo tee Dockerfile <<-'EOF'
    FROM nginx:latest
    RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
    EOF
    #構建鏡像,鏡像名稱為hello-world
    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服務。將命令中的<資料庫密碼>調整為MySQL資料庫密碼。

    使用Docker Compose時,命令不用連字號,比如docker compose version
    #啟動服務容器。
    sudo env "PATH=$PATH" "WORDPRESS_DB_PASSWORD=<資料庫密碼>" docker compose -f docker-compose.yaml up -d
  3. 在瀏覽器中輸入http://Elastic Compute Service執行個體的公網IP,訪問WordPress。

    需要在安全性群組允許存取80連接埠。

常見問題

Docker配置非root使用者權限

預設情況下,Docker命令需要root許可權(即使用sudo)。為了避免每次都輸入sudo並遵循最小許可權原則,應將目前使用者添加到docker使用者組。

  1. 將目前使用者添加到docker組。

    sudo usermod -aG docker $USER
  2. 執行newgrp docker命令生效後。直接使用docker命令,無需添加sudo

http://mirrors.cloud.aliyuncs.com無法訪問

  • 問題現象:地址http://mirrors.cloud.aliyuncs.com無法訪問。

  • 可能原因:網路不穩定。

  • 解決方案:請將http://mirrors.cloud.aliyuncs.com替換為https://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 dnf來更新dnf軟體包到最新狀態,然後再嘗試安裝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軟體源。

    # 備份到期軟體源。
    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即可。

相關文檔