远程服务器 Docker 环境配置指南

目录

概述

本文档介绍如何在远程 Linux 服务器上安装和配置 Docker 环境,包括 Docker Engine 和 Docker Compose。

适用系统

  • Ubuntu 18.04+ / Debian 10+
  • CentOS 7+ / RHEL 7+
  • 其他基于 systemd 的 Linux 发行版

前置要求

系统要求

  • 操作系统: Linux (64位)
  • 内核版本: 3.10 或更高
  • 权限: root 用户或具有 sudo 权限的用户
  • 网络: 能够访问软件仓库(可能需要配置镜像源)

检查系统信息

复制代码
# 检查系统版本
cat /etc/os-release

# 检查内核版本
uname -r

# 检查系统架构
uname -m

安装方法

方法一:使用自动化安装脚本(推荐)

项目提供了自动化安装脚本,支持自动检测系统类型并安装 Docker。

1. 从本地执行远程安装
复制代码
# 使用远程安装脚本(自动复制并执行)
cd /path/to/project/scripts
./install-docker-remote.sh <服务器IP> <用户名>
# 示例: ./install-docker-remote.sh 192.168.1.100 root
2. 手动复制脚本到服务器
复制代码
# 复制安装脚本到远程服务器
scp scripts/install-docker.sh <用户名>@<服务器IP>:/tmp/
# 示例: scp scripts/install-docker.sh root@192.168.1.100:/tmp/

# SSH 连接到服务器
ssh <用户名>@<服务器IP>
# 示例: ssh root@192.168.1.100

# 执行安装脚本
chmod +x /tmp/install-docker.sh
/tmp/install-docker.sh

方法二:手动安装(Ubuntu/Debian)

1. 更新系统包
复制代码
apt-get update
apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
2. 添加 Docker 官方 GPG key
复制代码
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
3. 设置 Docker 仓库
复制代码
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装 Docker Engine
复制代码
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 启动 Docker 服务
复制代码
systemctl start docker
systemctl enable docker

方法三:使用系统仓库安装(备用方案)

如果无法访问 Docker 官方仓库,可以使用系统仓库安装:

复制代码
# Ubuntu/Debian
apt-get update
apt-get install -y docker.io docker-compose

# CentOS/RHEL
yum install -y docker docker-compose

# 启动服务
systemctl start docker
systemctl enable docker

注意: 系统仓库的 Docker 版本可能较旧,建议优先使用官方仓库。

安装 Docker Compose(独立版本)

Docker Compose 现在作为 Docker 插件提供(docker compose),如果需要独立的 docker-compose 命令:

复制代码
# 下载 Docker Compose
DOCKER_COMPOSE_VERSION="2.24.0"
curl -L "https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

配置优化

1. 配置 Docker 镜像加速器

由于网络限制,建议配置国内镜像加速器以提高镜像拉取速度。

创建或编辑配置文件
复制代码
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://dockerhub.azk8s.cn"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
重启 Docker 服务
复制代码
systemctl daemon-reload
systemctl restart docker
验证镜像加速器配置
复制代码
docker info | grep -A 10 "Registry Mirrors"

2. 配置用户权限(非 root 用户)

如果非 root 用户需要使用 Docker,需要将其添加到 docker 组:

复制代码
# 将用户添加到 docker 组
usermod -aG docker $USER

# 或者指定用户名
usermod -aG docker username

# 重新登录或使用以下命令使组权限生效
newgrp docker

安全提示: 将用户添加到 docker 组等同于授予该用户 root 权限,请谨慎操作。

3. 配置 Docker 日志

Docker 默认日志可能占用大量磁盘空间,建议配置日志轮转:

复制代码
# 编辑 daemon.json(如果已存在,合并配置)
cat >> /etc/docker/daemon.json <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

# 重启 Docker
systemctl restart docker

4. 配置 Docker 存储驱动

根据系统选择合适的存储驱动:

复制代码
# 查看当前存储驱动
docker info | grep "Storage Driver"

# 如需修改,编辑 daemon.json
cat >> /etc/docker/daemon.json <<EOF
{
  "storage-driver": "overlay2"
}
EOF

验证安装

1. 检查 Docker 版本

复制代码
docker --version
docker info

2. 检查 Docker Compose 版本

复制代码
# 插件版本
docker compose version

# 独立版本(如果已安装)
docker-compose --version

3. 检查 Docker 服务状态

复制代码
systemctl status docker

4. 测试 Docker 运行

复制代码
# 运行测试容器
docker run --rm hello-world

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

5. 测试 Docker Compose

创建测试文件 docker-compose.test.yml:

复制代码
version: '3.8'
services:
  test:
    image: hello-world

运行测试:

复制代码
docker compose -f docker-compose.test.yml up

常见问题

1. 无法连接到 Docker Hub

问题: 拉取镜像时出现连接超时或网络错误。

解决方案:

  • 配置镜像加速器(见配置优化
  • 检查防火墙设置
  • 检查网络代理配置

2. Permission denied 错误

问题: 非 root 用户执行 Docker 命令时提示权限不足。

解决方案:

复制代码
# 将用户添加到 docker 组
usermod -aG docker $USER
newgrp docker

3. Docker 服务无法启动

问题 : systemctl start docker 失败。

解决方案:

复制代码
# 查看详细错误信息
systemctl status docker
journalctl -xe

# 检查 Docker 配置
docker info

# 重启 Docker 服务
systemctl restart docker

4. 磁盘空间不足

问题: Docker 镜像和容器占用大量磁盘空间。

解决方案:

复制代码
# 清理未使用的镜像、容器、网络和构建缓存
docker system prune -a

# 清理未使用的卷
docker volume prune

# 查看磁盘使用情况
docker system df

5. GPG key 下载失败

问题: 安装时无法下载 Docker GPG key。

解决方案:

  • 使用系统仓库安装(备用方案)
  • 使用国内镜像源
  • 检查网络连接和防火墙设置

6. Docker Compose 命令不存在

问题 : 执行 docker-compose 提示命令不存在。

解决方案:

  • 使用插件版本: docker compose(注意没有连字符)
  • 或安装独立版本(见安装方法

附录

A. 常用 Docker 命令

复制代码
# 镜像管理
docker images                    # 列出本地镜像
docker pull <image>              # 拉取镜像
docker rmi <image>              # 删除镜像
docker build -t <tag> .         # 构建镜像

# 容器管理
docker ps                        # 列出运行中的容器
docker ps -a                     # 列出所有容器
docker run <image>               # 运行容器
docker start <container>         # 启动容器
docker stop <container>         # 停止容器
docker rm <container>           # 删除容器
docker logs <container>         # 查看容器日志
docker exec -it <container> sh  # 进入容器

# 系统管理
docker system df                 # 查看磁盘使用
docker system prune             # 清理未使用的资源
docker info                      # 查看 Docker 信息

B. 常用 Docker Compose 命令

复制代码
# 使用插件版本(推荐)
docker compose up                # 启动服务
docker compose up -d            # 后台启动
docker compose down             # 停止并删除容器
docker compose ps               # 查看服务状态
docker compose logs             # 查看日志
docker compose build            # 构建镜像
docker compose pull             # 拉取镜像

# 使用独立版本
docker-compose up
docker-compose down
docker-compose ps

C. 安装脚本位置

项目中的安装脚本位于:

  • scripts/install-docker.sh - 主安装脚本
  • scripts/install-docker-remote.sh - 远程安装脚本

D. 参考资源

相关推荐
一叶龙洲5 小时前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
敖行客 Allthinker7 小时前
Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案
linux·运维·ubuntu
BullSmall8 小时前
Anolis OS 8.10 完整安装 Docker CE(生产可用,解决 podman 冲突)
docker·容器·podman
keyipatience8 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
元Y亨H8 小时前
生产环境监控与故障应急处理(5-5-5 标准)指南
运维
踏月的造梦星球8 小时前
达梦数据库执行计划与性能分析入门:EXPLAIN、AUTOTRACE 与 ET
服务器·数据库·oracle
观山岳五楼9 小时前
Ubuntu 24 怎么使用Ubuntu 20 的镜像源
linux·运维·ubuntu
星夜夏空999 小时前
网络编程(1)
服务器·网络
川石课堂软件测试9 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
寒晓星10 小时前
[linux]线程及多线程
linux·运维