Docker是一个开放平台,用于开发、发布和运行应用程序。如果您需要在实例上安装和使用Docker,可以参考本文,文中将介绍如何在实例上部署Docker以及一些基本的操作方法。
安装Docker
如果需要快速在您的实例上安装Docker,可以采用快速安装,若希望通过命令行来安装Docker,则可以选择命令行安装方式。
快速安装
您可以单击一键部署快速创建ROS资源栈,新建或选择一个实例安装Docker。
您可以通过扩展程序的方式在ECS实例上快速安装Docker。
命令行安装
Alibaba Cloud Linux 3
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo dnf -y update
添加阿里云源到您的实例中,这个源包含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
安装Alibaba Cloud Linux3专用的dnf源兼容插件。
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Alibaba Cloud Linux 2
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo yum -y update
添加阿里云源到您的实例中,这个源包含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
安装Alibaba Cloud Linux2专用的yum源兼容插件。
sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
CentOS 7.x
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo yum -y update
添加阿里云源到您的实例中,这个源包含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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
CentOS 8.x
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo dnf -y update
添加阿里云源到您的实例中,这个源包含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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Ubuntu
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo apt-get update
添加阿里云源到您的实例中,这个源包含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 | 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"
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Debian
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo apt-get update
添加阿里云源到您的实例中,这个源包含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 | 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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Fedora
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo dnf -y update
添加阿里云源到您的实例中,这个源包含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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Red Hat
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo yum -y update
添加阿里云源到您的实例中,这个源包含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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
Anolis OS
在安装最新版本的Docker之前,您可以使用docker -v
命令来检查当前的Docker版本。如果提示没有此命令,说明您还未安装Docker,若已安装旧版本的Docker,则需先卸载及其相关组件。
更新您的包管理工具。
sudo yum -y update
添加阿里云源到您的实例中,这个源包含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
安装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
启动Docker并设置Docker守护进程在系统启动时自动启动,这样可以确保每次系统启动时,Docker服务也会自动启动。
说明如果您的systemctl命令执行异常,请参见在Linux实例中执行systemctl命令报错怎么办?
sudo systemctl start docker sudo systemctl enable docker
通过查看Docker版本命令,验证Docker是否安装成功。
sudo docker -v
如下图回显信息所示,表示Docker已安装成功。
配置镜像源
由于运营商网络原因,您可能会遇到拉取Docker Hub镜像变慢,甚至下载失败的情况,建议参考以下方法解决。
阿里云容器镜像服务ACR提供了官方的镜像加速器,从而加速官方镜像的下载。
登录容器镜像服务控制台,在左侧导航栏选择 ,在镜像加速器页面获取加速器地址。
重要当前仅支持阿里云用户使用具备公网访问能力的阿里云产品进行镜像加速,且仅限于特定范围内的容器镜像。详情请见【产品变更】ACR镜像加速器功能调整公告。
创建并编辑
/etc/docker/daemon.json
文件(如果文件不存在,则创建):{ "registry-mirrors": ["<镜像加速器地址>"] }
重启Docker使配置生效。
重要重启Docker会使您的Docker服务短暂不可用,请谨慎操作。
sudo systemctl restart docker
如果您已经有了自定义的镜像加速器地址,并且希望使用它来加速Docker镜像的下载,您可以按照以下步骤进行设置。
您需要编辑Docker的配置文件
/etc/docker/daemon.json
,如果该文件不存在,您需要创建。{ "registry-mirrors": ["<您的自定义加速器地址>"] }
完成编辑后,保存文件并退出。然后,为了使新的配置生效,您需要重启Docker服务。这可以通过执行以下命令来完成。
重要重启Docker会使您的Docker服务短暂不可用,请谨慎操作。
sudo systemctl restart docker
如果您的实例无法连接公网或需要托管镜像,您可以使用阿里云容器镜像服务ACR进行镜像全生命周期管理,每个镜像仓库都提供了公网、VPC网络下对应的网络地址,详情请参见什么是容器镜像服务ACR。
创建简单Web程序镜像
接下来,我将为您演示使用Nginx镜像作为基础镜像,创建简单Web程序镜像。
前期准备
您的实例可以连接公网,使用docker pull
命令获取Nginx最新版镜像。
sudo docker pull nginx:latest
创建镜像
您需要创建一个名为
Dockerfile
的文件。Dockerfile
是一个特殊的文本文件,它用来定义如何构建一个 Docker 镜像。这个文件会告诉Docker需要使用哪个基础镜像,以及在这个基础镜像上需要安装哪些软件和进行哪些配置。sudo touch Dockerfile
编辑创建的
Dockerfile
并添加内容。FROM nginx:latest RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
使用Dockerfile构建您的镜像。
sudo docker build . -t hello-world:latest
为您的新镜像创建容器,并且命名容器名称为
hello-world
。sudo docker run -d -p 80:80 --name hello-world hello-world:latest
验证您的镜像,执行命令
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插件
安装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
使用查看Compose版本命令,验证Compose是否安装成功。
sudo docker compose version
预期输出(vN.N.N代表Compose的版本):
Docker Compose version vN.N.N
。
Compose独立版
下载并安装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
将可执行权限赋予安装目标路径中的独立二进制文件。
sudo chmod +x /usr/local/bin/docker-compose
执行查看版本命令,测试是否安装成功。
说明如果在安装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部署应用。
运行以下命令,以创建并编辑
docker-compose.yaml
文件:sudo vim docker-compose.yaml
按下
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:
编辑完成后,按下
Esc
键,退出编辑模式,然后输入:wq
保存并退出。运行以下命令,启动服务。
sudo env "PATH=$PATH" docker compose up -d
在浏览器中输入
http://云服务器ECS实例的公网IP
,即可进入WordPress配置页面,您可以根据界面提示配置相关参数后,访问WordPress。说明需要在安全组放行
80
端口,详细信息,请参见添加安全组规则。
常见问题
Linux ECS实例中执行dnf config-manager命令报错
Linux ECS实例中执行dnf install docker-ce命令报错
相关文档
Docker的更多使用方法,请参见Docker官方文档。
阿里云推出了制品中心,为开发者免费提供了来源于阿里云官方、龙蜥社区的安全可信容器基础镜像。
您可以使用企业P2P加速功能提升镜像拉取速度。具体操作,请参见在其他容器环境中使用P2P加速。
您可以在Docker中配置CLI来管理您的阿里云资源。具体操作,请参见在Docker中配置阿里云CLI。
如果您需要在轻量应用服务器上部署Docker,可参考基于轻量应用服务器上部署并使用Docker。