云服务器配置指南 (四):Docker,现代运维的瑞士军刀

如果说服务器是厨房,那 Docker 就是预制菜。

以前我们部署应用,要装环境、配依赖、改配置,折腾半天还可能因为版本冲突跑不起来。
有了 Docker,一切都变成了“开袋即食”。不管你的服务器是 Ubuntu 还是 CentOS,只要装了 Docker,应用就能一键跑起来。

本章我们将手把手教你安装和配置 Docker,让你的服务器进入容器化时代。


4.1 Docker 安装:别用 apt install docker

为什么?

Ubuntu 官方源里的 docker.io 版本通常比较老。为了用上最新的特性(和 Bug),我们推荐直接用 Docker 官方的安装脚本。

极简安装法(推荐)

Docker 官方提供了一个一键安装脚本,非常适合懒人:

1
2
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

这一行命令下去,它会自动检测你的系统,配置源,安装最新的 Docker Engine 和 Docker Compose。

必要的后续配置

装完别急着庆祝,还有两件事要做。

1. 启动并自启

1
2
sudo systemctl start docker
sudo systemctl enable docker

2. 免 sudo 使用 Docker

默认情况下,运行 docker 命令需要 sudo,这很烦。我们可以把当前用户加入 docker 组:

1
sudo usermod -aG docker $USER

注意:执行完这句后,你需要注销并重新登录(或者执行 newgrp docker)才会生效。

验证一下:

1
docker version

如果能看到 Client 和 Server 的信息,说明安装成功。


4.2 镜像加速:给 Docker 提速

和 apt 一样,Docker Hub 的服务器也在国外。拉取一个几百兆的镜像,如果不配置加速器,你可能要等到天荒地老。

配置镜像源

1
2
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

写入以下内容(这里以阿里云为例,建议去阿里云容器镜像服务申请一个专属加速地址,或者使用国内其他的公开镜像):

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}

特别说明
我在配置里顺便加了日志限制(log-opts)。如果不加这个,Docker 容器的日志会无限增长,直到把你的磁盘撑爆。这是无数血泪换来的教训。

重启 Docker 生效:

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

4.3 Docker Compose:容器编排神器

什么是 Docker Compose?

一个容器叫 Docker,一堆容器叫 Docker Compose。
现在的应用很少是单打独斗的,通常需要数据库、缓存、Web 服务配合。用 docker run 一个个启动太累了,用 docker-compose.yml 定义好,一条命令全部拉起。

怎么用?

现在的 Docker 已经内置了 Compose(注意是 docker compose 而不是以前的 docker-compose)。

创建一个 docker-compose.yml

1
2
3
4
5
6
7
8
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always

启动:

1
docker compose up -d

停止:

1
docker compose down

4.4 常用命令速查

虽然 GUI 工具(如 Portainer)很好用,但命令行才是男人的浪漫。

  • 看容器docker ps (加 -a 看所有)
  • 看日志docker logs -f <容器名> (排错神器)
  • 进容器docker exec -it <容器名> bash (进去修修补补)
  • 删容器docker rm -f <容器名>
  • 删镜像docker rmi <镜像名>
  • 大扫除docker system prune -a (清理所有不用的镜像和容器,慎用!)

总结

Docker 是现代运维的基石。装好了 Docker,你的服务器就变成了一个万能的积木底座。

下一章,我们将利用 Docker 快速搭建一套完整的开发环境,包括 MySQL、Redis 等常用服务。