远程服务器 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. 参考资源

相关推荐
Hotlogin1 小时前
多账号业务的数据安全体系构建:从浏览器指纹到环境隔离的系统级方案
运维·安全
cqsztech1 小时前
自己如何动手创建oracle 19c 19.3标准版2 DOCKER 镜像
数据库·docker·oracle
majingming1231 小时前
野火鲁班猫修改IP
linux·运维·服务器
ayaya_mana1 小时前
Debian 12 上部署 OpenMediaVault 详细配置步骤
linux·运维·debian·nas·存储服务器·omv
MyFreeIT1 小时前
ubuntu manual
linux·运维·ubuntu
1***43801 小时前
SQL2000在win10上安装的方法
运维·服务器
pp-周子晗(努力赶上课程进度版)2 小时前
Docker入门学习笔记
spring cloud·docker·容器
jixunwulian2 小时前
边缘计算网关在空压机数据采集与远程运维中的解决方案
运维·人工智能·边缘计算
源码技术栈2 小时前
Java智能诊所管理系统源码 SaaS云门诊运维平台源码
java·大数据·运维·人工智能·源码·诊所·门诊