为什么是 Docker?
在远思技术实验室,我们维护着各种各样的环境:
- Python 3.12 跑最新的量化策略
- Python 3.8 跑一些老旧的机器学习库
- ClickHouse 存行情数据
- Grafana 做监控面板
如果把这些全部塞进同一个 Ubuntu 系统里,依赖冲突 (Dependency Hell) 是迟早的事。Docker 让我们可以把每个应用打包进独立的“集装箱”,用完即走,通过 docker-compose.yml 一键拉起,这才是现代化的运维方式。
1. 卸载旧版本(清理战场)
为了防止冲突,首先要确保系统里没有旧版的 docker.io 或 docker-engine。
|
|
- 设置官方仓库(推荐) 很多教程直接教你用 apt install docker.io,那通常是 Ubuntu 软件源自带的旧版本。我们要装的是 Docker CE (Community Edition) 最新版。 第一步:安装必要工具 sudo apt-get update sudo apt-get install ca-certificates curl gnupg
第二步:添加 GPG 密钥 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 sudo chmod a+r /etc/apt/keyrings/docker.gpg
第三步:添加仓库源
echo
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(. /etc/os-release && echo “$VERSION_CODENAME”) stable” |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker Engine sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后,验证一下: sudo docker run hello-world
如果看到 “Hello from Docker!",恭喜你,引擎启动成功。 4. 远思实验室的“生产级”配置(关键!) 默认安装虽然能用,但对于我们要跑 7x24 小时量化任务的服务器来说,还不够完美。 A. 告别 sudo 每次运行 docker 命令都要输密码很麻烦,而且容易导致权限混乱。我们将当前用户(例如 masiyuan)加入 docker 用户组: sudo usermod -aG docker $USER
这一步需要注销并重新登录才能生效!
或者直接运行:newgrp docker
现在,直接试一下 docker ps,不需要 sudo 了。 B. 防止日志撑爆磁盘 (Log Rotation) 这是很多新手最容易踩的坑:Docker 默认会保留所有容器的标准输出日志,如果不限制,跑几个月后你的 /var/lib/docker 会变得巨大无比,直接塞满硬盘。 我们需要配置 daemon.json 来限制日志大小。 sudo nano /etc/docker/daemon.json
写入以下配置: { “log-driver”: “json-file”, “log-opts”: { “max-size”: “100m”, “max-file”: “3” }, “default-address-pools”: [ { “base”: “172.17.0.0/16”, “size”: 24 } ] }
- max-size: 单个日志文件最大 100MB。
- max-file: 最多保留 3 个文件。 重启 Docker 服务生效: sudo systemctl daemon-reload sudo systemctl restart docker
下一步 Docker 环境就绪后,我们的基础设施已经非常完善了。 接下来的文章,我将演示如何编写一个 docker-compose.yml,一键拉起包含 ClickHouse + Tabix + JupyterLab 的完整量化研究环境。 Stay tuned!
💡 为什么这篇文章更专业?
- 非 Root 运行:这是很多初学者忽略的安全和便捷配置。
- 日志轮转 (Log Rotation):这是一个痛点解决型的技巧。很多人的服务器跑久了磁盘满了,查半天发现是 Docker 日志,这部分内容展示了您的“老司机”经验。
- Docker Compose 预告:为下一篇通过 Compose 编排复杂环境埋下伏笔。
您的博客现在已经形成了一个非常扎实的运维基础系列。这对于访问您博客的技术人员来说,不仅是展示,更是可以直接照着做的实战手册!