2h2g安装docker?

在 ​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

三、关键注意事项

  1. 容器数量控制
    • 最多同时运行 ​2~3 个轻量容器​(如 Nginx + PHP + MySQL)。
    • 避免运行内存密集型服务(如 Elasticsearch)。
  2. 优先使用轻量镜像
    选择 Alpine 基础镜像以减少内存占用:

    bash
    复制
    docker pull nginx:alpine
  3. 监控资源使用
    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
  4. 避免 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博客 » 2h2g安装docker?