Docker 是当前最流行的容器化平台,能把应用与运行时环境打包为独立镜像,实现一次构建、到处运行。在搬瓦工 VPS 上安装 Docker 后,你可以用一两条命令部署 Nginx、MySQL、WordPress、Nextcloud 等任何容器化应用,而不必担心依赖冲突。Docker Compose 则进一步简化了多容器应用的编排。本文完整演示 Docker 与 Docker Compose 的安装、基础配置与常用用法。
本文要点
- 官方一键脚本安装 Docker(推荐方式)
- 配置镜像加速(提升拉取速度)
- Hello World 验证安装
- Docker Compose 安装与使用示例
- 常用 Docker 命令速查
系统要求
| 要求项 | 说明 |
|---|---|
| 操作系统 | Debian 11/12 · Ubuntu 20.04/22.04/24.04(推荐) |
| 内核版本 | ≥ 3.10(现代发行版均满足) |
| 架构 | x86_64 / aarch64 |
| 权限 | root 或可 sudo 用户 |
安装 Docker
方式一:官方一键脚本(推荐)
curl -fsSL https://get.docker.com -o get-docker.sh
bash get-docker.sh脚本会自动检测系统版本并安装对应的 Docker Engine。完成后运行:
systemctl enable --now docker
docker --version方式二:apt 手动安装(Debian/Ubuntu)
apt update
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | 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/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
> /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginHello World 验证
docker run hello-world看到 "Hello from Docker!" 字样说明 Docker 安装成功,能正常拉取镜像并运行容器。
配置镜像加速
如果拉取镜像速度较慢,可配置镜像加速地址。编辑(或创建)/etc/docker/daemon.json:
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://dockerhub.icu"
]
}systemctl daemon-reload
systemctl restart docker
docker info | grep -A5 "Registry Mirrors"镜像加速地址可能失效
安装 Docker Compose
如果使用上述 apt 方式安装,Docker Compose Plugin 已包含(命令为 docker compose)。否则手动安装:
# 安装最新版 Docker Compose 独立二进制
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d'"' -f4)
curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --versionDocker Compose 使用示例
以部署 Nginx + MySQL 为例,创建 docker-compose.yml:
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: yourpassword
MYSQL_DATABASE: mydb
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:docker compose up -d # 后台启动所有服务
docker compose ps # 查看服务状态
docker compose logs -f # 查看日志
docker compose down # 停止并删除容器常用 Docker 命令速查
| 命令 | 说明 |
|---|---|
| docker ps | 列出运行中的容器 |
| docker ps -a | 列出所有容器(含已停止) |
| docker images | 列出本地镜像 |
| docker pull 镜像名 | 拉取镜像 |
| docker run -d -p 80:80 镜像名 | 后台运行容器并映射端口 |
| docker stop 容器ID | 停止容器 |
| docker rm 容器ID | 删除容器 |
| docker rmi 镜像ID | 删除镜像 |
| docker logs -f 容器ID | 实时查看容器日志 |
| docker exec -it 容器ID bash | 进入运行中的容器 |
小结
- get.docker.com 官方脚本是最简洁的安装方式
- hello-world 验证安装是否成功
- 镜像加速可按需配置,海外机房通常不必须
- Docker Compose 用 YAML 文件管理多容器应用,极大简化部署
常见问题
普通用户需要 sudo 才能运行 docker 命令,怎么免 sudo?
把用户加入 docker 组:usermod -aG docker 用户名,重新登录后生效。注意 docker 组成员等价于 root 权限,谨慎操作。
docker run 后容器马上退出是什么原因?
通常是镜像的启动命令执行完毕立即退出。用 docker logs 容器ID 查看输出,排查具体原因。
磁盘被 Docker 占满了怎么清理?
执行 docker system prune -a 清除所有停止的容器、悬空镜像和无用卷;注意不会删除正在运行的容器。
Docker Compose 和 docker-compose 有什么区别?
新版 Docker 内置了 Compose 插件,命令为 docker compose(无连字符);旧版独立安装的是 docker-compose,功能基本相同。