Docker 作为轻量级容器技术,已经成为云计算和 DevOps 环境中最常用的部署方式之一。无论是搭建微服务、多环境测试、快速上线项目,还是部署数据库、缓存系统、Web 应用,几乎都能通过 Docker 完成。而在云服务器中部署 Docker 环境,是所有上云用户必须掌握的一项基础能力。只要服务器具备 Linux 系统、SSH 可访问,并开启 root 或 sudo 权限,就可以快速搭建 Docker 运行环境,并通过镜像、容器化方式部署业务应用。
在云服务器中安装 Docker 通常分为四个关键步骤:系统环境准备、Docker 安装与启动、镜像管理、容器运行与持久化。无论你使用的是阿里云、腾讯云、华为云、AWS 还是海外 VPS,只要系统版本符合要求,都可以采用同样的方法部署。大多数用户选择 CentOS、Ubuntu 或 Debian 作为云服务器系统,因此下面以最常见的 Ubuntu 和 CentOS 为示例进行说明。
部署前需要确保服务器已更新系统包,并支持基础网络访问,因为 Docker 镜像仓库需要联网拉取资源。如果服务器访问受限,例如在中国大陆拉取镜像速度较慢,可以替换为镜像源,例如阿里云、腾讯云或 Docker 中国镜像。这一步可以在安装完成后进行调整。
例如 Ubuntu 执行系统更新命令如下:
sudo apt update && sudo apt upgrade -y
而 CentOS 则使用:
sudo yum update -y
系统更新完成后,就可以开始安装 Docker。为了保证版本稳定性,推荐使用 Docker 官方提供的安装方式,而不是系统自带的旧版本包管理版本。以下以 Ubuntu 为例:
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
安装完成后,可以通过以下命令验证版本:
docker --version
sudo systemctl enable docker
sudo systemctl start docker
为了让当前用户无需使用 sudo 也能执行 docker,建议将用户加入 docker 组:
sudo usermod -aG docker $USER
修改完成后需要重新登录 SSH 或执行 newgrp docker 生效。
CentOS 安装方式类似,只需要使用 yum 替换 apt,并添加对应仓库源即可。如果服务器无法访问 Docker 官方源,可以切换镜像加速器,例如:
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl restart docker
当 Docker 安装完成后,就可以开始使用镜像和容器。Docker 镜像相当于打包好的运行环境,而容器则是实际运行的应用实例。可以用 docker pull 拉取镜像,例如:
docker pull nginx
拉取完成后运行一个 Nginx 容器测试:
docker run -d --name web-test -p 80:80 nginx
访问服务器公网 IP,就可以看到 Nginx 默认欢迎页面,这表示容器已经正确运行。通过 docker ps 可以查看运行中的容器,而 docker stop、docker restart、docker rm 则分别控制容器停止、重启和删除。
为了部署真实项目,通常需要挂载本地目录,实现容器与宿主机文件共享,例如部署网站:
docker run -d --name web \
-p 80:80 \
-v /var/www/html:/usr/share/nginx/html \
nginx
这意味着服务器上的 /var/www/html 目录将被映射到容器内部,方便直接修改网页文件而无需重新打包镜像。
对于数据库类容器,如 MySQL,可以使用持久化挂载方式存储数据:
docker run -d --name mysql-db \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0
这样即使容器删除,数据也不会消失,因为文件保存在宿主机目录中。
如果业务部署较复杂,可以使用 Docker Compose 进行多容器编排,例如同时运行 Nginx + PHP + MySQL,只需一个 docker-compose.yml 文件即可快速启动完整环境:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
volumes:
- ./web:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- ./db:/var/lib/mysql
执行:
docker compose up -d
即可一次启动所有服务,比单独运行容器更方便也是企业级 DevOps 常用方式。
完成 Docker 部署后,还可以启用开机自启、日志清理、镜像优化等后台维护,如定期清理无用资源:
docker system prune -a
随着容器化应用越来越普及,大部分应用程序、数据库、中间件、开发环境都可以通过 Docker 部署,减少运维负担,并支持秒级回滚、快速迁移、弹性扩容,这也是为什么越来越多企业将应用迁移到 Docker 环境的重要原因。