2、环境准备:Linux基础操作、Docker安装与配置、Docker Compose入门
说实话,很多初学者一上来就急着写配置、调代码,结果环境没搭好,折腾半天连个日志都收不上来。我见过太多这样的案例了——自己当年也踩过这个坑。
这一章,咱们把地基打牢。你不需要成为Linux专家,但几个核心命令得顺手。Docker和Compose是这套日志系统的「运行底座」,搞懂了它们,后面30章你都会走得很顺。
2.1 你需要的Linux基础操作
我假设你手头有台Linux机器,Ubuntu 20.04或CentOS 7以上都行。如果你用的是Mac,大部分命令也通用。Windows用户建议先装个WSL2,别在Windows原生环境里折腾Docker,坑太多。
2.1.1 文件与目录操作
日志采集系统离不开文件读写。你至少得熟练这几条:
ls -lh—— 看文件大小,别用裸ls,啥都看不清cd /var/log—— 切到日志目录,这是我们的主战场tail -f app.log—— 实时跟踪日志,调试时几乎每刻都在用grep ERROR app.log | head -20—— 从海量日志里捞关键信息vim或nano—— 改配置文件,我个人偏爱vim,但新手用nano更友好
cd /var/log && ls -lh,先看看磁盘有没有被日志撑爆。曾经有一次线上告警,就是日志文件把根目录写满了,服务全挂——从那以后我养成了这个条件反射。
2.1.2 进程与服务管理
我们的采集器以后台进程运行,你得会看进程、杀进程:
ps aux | grep filebeat—— 找采集进程systemctl status docker—— 看Docker服务状态kill -9 PID—— 实在关不掉时再用,别滥用
2.1.3 网络与端口检查
日志要传输,网络必须通。我调试时最常用的三板斧:
| 命令 | 用途 | 我踩过的坑 |
|---|---|---|
curl -v http://localhost:9200 |
测试ES是否响应 | 忘了加端口号,一直报连接拒绝 |
telnet 192.168.1.10 5044 |
测试端口连通性 | 防火墙没开,telnet一直卡住 |
ss -tlnp |
看本机监听端口 | 比netstat快,推荐用这个 |
2.2 Docker安装与配置
Docker是我们这套系统的「集装箱」。每个组件——Filebeat、Logstash、Elasticsearch——都跑在独立的容器里,互不干扰。装好Docker,你就拥有了一个可复制的运行环境。
2.2.1 安装Docker Engine
我推荐用官方脚本一键安装,省心:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
装完后,把当前用户加入docker组,免得每次敲sudo:
sudo usermod -aG docker $USER
newgrp docker # 或者退出重登
验证一下:
docker --version
docker run hello-world
看到「Hello from Docker!」就对了。
apt install docker.io装过,版本太老,后面升级时一堆兼容问题。后来就只用官方脚本了。
2.2.2 配置镜像加速器
国内拉取Docker镜像经常超时。你想想看,一个几百MB的镜像下到一半断了,多闹心。配置个加速器吧:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
阿里云、腾讯云、中科大都有加速器,选一个离你近的。我个人用腾讯云的,速度一直很稳。
2.2.3 验证Docker网络与存储
日志系统涉及大量数据读写,Docker的存储驱动得选对:
docker info | grep -i "storage driver"
看到overlay2就放心了。如果是devicemapper,建议换系统——CentOS 7默认是devicemapper,性能差,还容易出bug。
2.3 Docker Compose入门
单机跑一个容器用docker run还行,但我们的日志系统有4、5个组件要一起启动,还要配置网络、挂载卷、设置环境变量……手敲命令会疯掉的。
Docker Compose就是来解决这个问题的。它用一个YAML文件描述整个服务栈,一条命令全部拉起。
2.3.1 安装Compose
Docker Compose现在已经是Docker官方的一部分了。如果你装的是Docker Desktop(Mac/Windows),Compose自带。Linux下需要单独装:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker compose,不带横杠)。v1已经停止维护了。我目前所有项目都迁移到了v2,兼容性更好。
2.3.2 第一个Compose文件
咱们先写个最简单的,启动一个Nginx容器看看效果:
# docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
restart: always
启动:
docker-compose up -d
浏览器打开http://你的IP:8080,看到Nginx欢迎页就成功了。
这个文件虽然简单,但包含了Compose的核心要素:
- services —— 定义你要跑的服务
- image —— 指定镜像
- ports —— 端口映射,宿主机端口:容器端口
- restart —— 宕机后自动重启,生产环境必备
2.3.3 常用Compose命令
后面30章你会反复用到这些命令,先混个脸熟:
| 命令 | 作用 | 使用频率 |
|---|---|---|
docker-compose up -d |
后台启动所有服务 | ⭐⭐⭐⭐⭐ |
docker-compose down |
停止并删除容器 | ⭐⭐⭐⭐ |
docker-compose logs -f |
跟踪所有服务的日志 | ⭐⭐⭐⭐⭐ |
docker-compose ps |
查看服务运行状态 | ⭐⭐⭐ |
docker-compose restart |
重启某个服务 | ⭐⭐⭐ |
docker-compose down会删除容器,但不会删除数据卷。如果你改了配置想完全重来,用docker-compose down -v。不过小心——-v会把数据卷也删掉,ES里的索引数据就没了。我吃过一次亏,测试环境还好,生产环境千万别乱用。
2.4 本章知识体系总览
下面这张图把本章的核心知识点串起来了。你可以把它当作一张「地图」,后面用到哪个知识点,回来瞄一眼就行。
2.5 快速验证:你的环境准备好了吗?
学完这一章,你可以用下面这个清单自检一下。每项都打勾了,再往后走:
- ☐ 能在Linux上熟练使用
tail -f和grep - ☐
docker --version输出正常,且不用加sudo - ☐ 配置了镜像加速器,
docker pull nginx:alpine能在1分钟内完成 - ☐
docker-compose --version输出v2版本 - ☐ 能成功运行本章的Nginx Compose示例