在 2核2GB内存 的服务器上安装 Docker 是可行的,但需注意资源分配以避免性能瓶颈。以下是分步指南和优化建议:
一、安装 Docker(通用步骤)
1. 卸载旧版本(如有)
bash
复制
sudo apt-get remove docker docker-engine docker.io containerd runc
2. 安装依赖工具
bash
复制
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
3. 添加 Docker 官方 GPG 密钥
bash
复制
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. 设置稳定版仓库
bash
复制
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 安装 Docker 引擎
bash
复制
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
6. 验证安装
bash
复制
sudo docker run hello-world
若看到 Hello from Docker! 表示安装成功。
二、2H2G 服务器的优化配置
1. 限制 Docker 资源使用
编辑 /etc/docker/daemon.json(不存在则创建):
json
复制
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65535,
"Soft": 65535
}
},
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
重启 Docker 生效:
bash
复制
sudo systemctl restart docker
2. 调整容器内存限制
运行容器时显式限制资源(示例):
bash
复制
docker run -it --memory=512m --cpus=1 nginx
--memory=512m:限制容器最多使用 512MB 内存(建议单个容器不超过 1GB)。--cpus=1:限制容器最多使用 1 个 CPU 核心。
3. 启用 Docker 自启动
bash
复制
sudo systemctl enable docker
三、关键注意事项
- 容器数量控制
- 最多同时运行 2~3 个轻量容器(如 Nginx + PHP + MySQL)。
- 避免运行内存密集型服务(如 Elasticsearch)。
- 优先使用轻量镜像
选择 Alpine 基础镜像以减少内存占用:bash复制docker pull nginx:alpine - 监控资源使用
bash复制
docker stats输出示例:
markdown复制CONTAINER ID CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS abc123 0.5% 150MiB / 512MiB 29% 1.2kB/0B 0B/0B 5 - 避免 Swap 使用
Docker 默认禁用 Swap,2GB 内存下务必保持此设置:bash复制sudo sysctl vm.swappiness=0
四、常见问题解决
1. 内存不足导致容器崩溃
- 现象:容器频繁重启或被 OOM Killer 终止。
- 解决:降低容器内存限制或减少并发容器数量。
2. 端口冲突
- 现象:
Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use - 解决:停止占用端口的服务或修改容器映射端口:
bash复制
docker run -p 8080:80 nginx
3. 磁盘空间不足
- 清理无用镜像和容器:
bash复制
docker system prune -a
五、推荐部署方案
| 服务 | 内存限制 | CPU 限制 | 镜像 |
|---|---|---|---|
| Nginx | 256MB | 0.5核 | nginx:alpine |
| PHP-FPM | 512MB | 1核 | php:8-fpm |
| MySQL | 512MB | 1核 | mysql:5.7 |
总资源占用:约 1.25GB 内存 + 2.5核(需预留资源给系统)。
通过以上配置,2H2G 服务器可以稳定运行基础容器化服务,但需严格监控资源使用。对于生产环境,建议升级到 4GB 以上内存。
ECLOUD博客