本文将介绍如何在云服务器ECS中安装和使用Docker与Docker Compose。
安装Docker
快速安装
如果您希望尽快在ECS上安装Docker,而不需要关心具体执行细节,可以通过一键运行Terraform的方式,在现有的实例上安装Docker,或新建一个装有Docker的ECS实例。
新建实例:设置参数
create = true
,依次点击发起调试 > 预览并执行。选择一个已有实例:设置参数
create = false
和instance_id
,依次点击发起调试 > 预览并执行。
命令行安装
如果您需要了解具体的安装命令细节,可以参考以下内容:
Alibaba Cloud Linux 3
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Alibaba Cloud Linux 2
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
CentOS 7.x
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
CentOS 8.x
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Ubuntu
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#更新包管理工具 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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Debian
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#更新包管理工具 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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Fedora
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Red Hat
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Anolis OS
在安装最新版本的Docker之前,请确保先卸载当前安装的Docker及其相关组件,避免潜在的安装冲突和兼容性问题。
执行以下命令安装Docker社区版本。
说明使用Compose插件时,命令中间不用连字符,比如
docker compose version
。#添加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 #启动Docker sudo systemctl start docker #设置Docker守护进程在系统启动时自动启动 sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
配置镜像源
当Docker Hub镜像拉取受网络影响时,可配置Docker镜像源提升速度。但请注意,镜像源配置不适用于docker search
命令,因为它直接查询Docker Hub。
要配置阿里云容器镜像服务ACR镜像加速器,请登录容器镜像服务控制台,在左侧导航栏选择 ,在镜像加速器页面获取加速器地址。
网络不稳定可能导致加速器无法成功拉取指定版本的容器镜像。如需进一步解决方案,请参阅Docker Hub拉取失败解决方案。
您需要编辑Docker的配置文件
/etc/docker/daemon.json
,如果该文件不存在,您需要创建它。{ "registry-mirrors": ["<加速器地址>"] }
完成编辑后,保存文件并退出。然后,为了使新的配置生效,您需要重启Docker服务。这可以通过执行以下命令来完成。
重要重启Docker会使您的Docker服务短暂不可用,请谨慎操作。
sudo systemctl restart docker
创建简单Web程序镜像
以下是创建基于Nginx镜像的简单Web程序。
构建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
启动Web程序镜像的容器,并且命名容器名称为
hello-world
。sudo docker run -d -p 80:80 --name hello-world hello-world:latest
执行
curl http://localhost
命令,验证Web程序是否正确显示Hello World!
。
安装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插件
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
使用查看Compose版本命令,验证Compose是否安装成功。
sudo docker compose version
Compose独立版
下载并安装Compose独立版。
说明在尝试访问GitHub时,您可能会遇到由于网络问题导致的访问超时或连接失败等异常情况。为了解决这些问题,请尝试多次重新连接。
curl -SL https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose #将可执行权限赋予安装目标路径中的独立二进制文件 sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
执行查看版本命令,测试是否安装成功。
sudo docker-compose version
使用Docker Compose部署应用
以下是创建基于WordPress镜像的Web程序。
创建Compose编排文件并启动WordPress服务。
#创建编排文件,添加Mysql与WordPress sudo tee docker-compose.yaml <<-'EOF' 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 #数据库ROOT用户密码 MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db: EOF #启动服务容器。 sudo env "PATH=$PATH" docker compose up -d
在浏览器中输入
http://云服务器ECS实例的公网IP
,访问WordPress。说明需要在安全组放行
80
端口,详细信息,请参见添加安全组规则。
常见问题
执行dnf config-manager命令报错
执行dnf install docker-ce命令报错
相关文档
Docker的更多使用方法,请参见Docker官方文档。
阿里云推出了制品中心,为开发者免费提供了来源于阿里云官方、龙蜥社区的安全可信容器基础镜像。
您可以使用企业P2P加速功能提升镜像拉取速度。具体操作,请参见在其他容器环境中使用P2P加速。
您可以在Docker中配置CLI来管理您的阿里云资源。具体操作,请参见在Docker容器中运行阿里云CLI。
如果您需要在轻量应用服务器上部署Docker,可参考基于轻量应用服务器上部署并使用Docker。