安装Docker

更新时间:

Docker是一个开放平台,用于开发、发布和运行应用程序。如果您需要在实例上安装和使用Docker,可以参考本文,文中将介绍如何在实例上部署Docker以及一些基本的操作方法。

安装Docker

如果需要快速在您的实例上安装Docker,可以采用快速安装,若希望通过命令行来安装Docker,则可以选择命令行安装方式。

快速安装

  • 您可以单击一键部署快速创建ROS资源栈,新建或选择一个实例安装Docker。

  • 您可以通过扩展程序的方式在ECS实例上快速安装Docker。

    通过扩展程序安装

    说明

    如果需要批量安装,您可以登录系统运维管理控制台,左侧菜单选择服务器管理 > 扩展程序,选择Docker社区版

    使用限制

    当您的操作系统满足以下条件时,您可以使用扩展程序。

    • ECS实例必须处于运行中状态。

    • ECS实例已安装云助手,并且云助手状态为正常

    • 操作系统

      • Alibaba Cloud Linux

      • CentOS

      • Ubuntu

      • Debian

      • Fedora

      • Windows Server

    操作步骤

    1. 登录ECS管理控制台,找到目标ECS实例,单击实例ID,进入实例详情页。

    2. 选择定时与自动化任务 > 安装/卸载扩展程序 > 安装扩展程序

      image

    3. 安装扩展程序对话框,要安装的扩展程序选择Docker社区版,然后单击下一步,按照界面提示完成操作。

      image

      当任务状态为已完成时,说明Docker已安装。

      image

命令行安装

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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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 | sudo 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 | 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"
  3. 安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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 | sudo 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 | 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"
      sudo apt-get update
  3. 安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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 yum -y update
  2. 添加阿里云源到您的实例中,这个源包含Docker软件包,方便您使用命令来安装和更新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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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。

    重要

    由于网络原因,如果跳过此步可能会导致您安装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构建和Compose插件。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    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

配置镜像源

由于运营商网络原因,您可能会遇到拉取Docker Hub镜像变慢,甚至下载失败的情况,建议参考以下方法解决。

  • 阿里云容器镜像服务ACR提供了官方的镜像加速器,从而加速官方镜像的下载。

    1. 登录容器镜像服务控制台,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器页面获取加速器地址

      重要

      由于运营商网络等不稳定因素可能导致镜像加速器无法成功拉取到指定版本的容器镜像。详情请见Docker Hub拉取失败解决方案

    2. 创建并编辑/etc/docker/daemon.json文件(如果文件不存在,则创建):

      {
          "registry-mirrors": ["<镜像加速器地址>"]
      }            
    3. 重启Docker使配置生效。

      重要

      重启Docker会使您的Docker服务短暂不可用,请谨慎操作。

      sudo systemctl restart docker
  • 如果您已经有了自定义的镜像加速器地址,并且希望使用它来加速Docker镜像的下载,您可以按照以下步骤进行设置。

    1. 您需要编辑Docker的配置文件/etc/docker/daemon.json,如果该文件不存在,您需要创建它。

      {
          "registry-mirrors": ["<您的自定义加速器地址>"]
      }            
    2. 完成编辑后,保存文件并退出。然后,为了使新的配置生效,您需要重启Docker服务。这可以通过执行以下命令来完成。

      重要

      重启Docker会使您的Docker服务短暂不可用,请谨慎操作。

      sudo systemctl restart docker
  • 如果您的实例无法连接公网或需要托管镜像,您可以使用阿里云容器镜像服务ACR进行镜像全生命周期管理,每个镜像仓库都提供了公网、VPC网络下对应的网络地址,详情请参见什么是容器镜像服务ACR

创建简单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!

使用Docker Compose

Docker Compose是Docker官方提供的用于定义和运行多个Docker容器的开源容器编排工具,可以使用YAML文件来配置应用程序需要的所有服务,然后使用docker compose运行命令解析YAML文件配置,创建并启动配置文件中的所有Docker服务,具有运维成本低、部署效率高等优势。

关于Docker Compose的更多信息,请参见Docker Compose官网

安装Docker Compose

如果您参考的本文安装Docker,那么Compose插件将默认安装到您的实例中。您可以通过如下命令查看。

sudo docker compose version

预期输出(vN.N.N代表Compose的版本):Docker Compose version vN.N.N

如果您的Compose插件未成功安装或您需要使用Compose独立版(docker-compose)可参考下面内容。

重要
  • 使用Compose独立版时,命令中间要用连字符,比如docker-compose up

  • 使用Compose插件时,命令中间不用连字符,比如docker compose up

Compose插件

  1. 安装Compose插件。

    说明

    如果安装命令遇到问题,您可能需要将源添加到您的实例,请参考本文命令行安装的第2步,将阿里云源添加到您的实例。

    • 对于Alibaba Cloud Linux 3、CentOS 8.x、Fedora。

      sudo dnf -y install docker-compose-plugin
    • 对于Ubuntu、Debian。

      sudo apt-get -y install docker-compose-plugin
    • 对于Alibaba Cloud Linux 2、CentOS 7.x、Red Hat、Anolis OS。

      sudo yum -y install docker-compose-plugin
  2. 使用查看Compose版本命令,验证Compose是否安装成功。

    sudo docker compose version

    预期输出(vN.N.N代表Compose的版本):Docker Compose version vN.N.N

Compose独立版

  1. 下载并安装Compose独立版。

    curl -SL http://mirrors.cloud.aliyuncs.com/docker-toolbox/linux/compose/1.9.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
  2. 将可执行权限赋予安装目标路径中的独立二进制文件。

    sudo chmod +x /usr/local/bin/docker-compose
  3. 执行查看版本命令,测试是否安装成功。

    说明

    如果在安装Compose之后执行docker-compose命令遇到问题,可能是您的系统环境变量中没有包含Compose的安装路径。您可以通过创建一个符号链接到/usr/bin目录或者您的环境变量中包含的其他目录来解决这个问题。

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    sudo docker-compose version

使用Docker Compose部署应用

下文以部署WordPress为例,介绍如何使用docker-compose部署应用。

  1. 运行以下命令,以创建并编辑docker-compose.yaml文件:

    sudo vim docker-compose.yaml
  2. 按下i键,进入编辑模式,添加以下内容以定义WordPress和MySQL服务。

    version: '3.1'
    
    services:
      wordpress:
        image: wordpress
        restart: always
        ports:
          - "80:80"
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: 123456
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - wordpress:/var/www/html
    
      db:
        image: mysql:5.7
        restart: always
        ports:
          - "3306:3306"
        environment:
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: 123456
          MYSQL_RANDOM_ROOT_PASSWORD: '1'
        volumes:
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
  3. 编辑完成后,按下Esc键,退出编辑模式,然后输入:wq保存并退出。

  4. 运行以下命令,启动服务。

    sudo env "PATH=$PATH" docker compose up -d
  5. 在浏览器中输入http://云服务器ECS实例的公网IP,即可进入WordPress配置页面,您可以根据界面提示配置相关参数后,访问WordPress。

    说明

    需要在安全组放行80端口,详细信息,请参见添加安全组规则

常见问题

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

相关文档