服务器docker基础环境安装

举报
yd_272031863 发表于 2026/11/04 23:20:31 2026/11/04
【摘要】 基础环境安装本文档为「拾壹博客项目部署方案」系列文档之一,涵盖 Docker CE 的安装、生产级配置与常用命令。 1. 安装 Docker CE 1.1 卸载旧版本(推荐执行)清理系统中可能存在的旧版 Docker 组件,避免冲突:sudo yum remove docker \ docker-client \ dock...

基础环境安装

本文档为「拾壹博客项目部署方案」系列文档之一,涵盖 Docker CE 的安装、生产级配置与常用命令。


1. 安装 Docker CE

1.1 卸载旧版本(推荐执行)

清理系统中可能存在的旧版 Docker 组件,避免冲突:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2 修复系统 YUM 源(CentOS 8+ 必做)

CentOS 8 官方源已停止维护,需切换到归档源:

# 备份原有 repo 文件
mkdir /etc/yum.repos.d.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d.bak/

# 下载阿里云 CentOS Stream 8 vault 源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

# 清理缓存并重建元数据
yum clean all
yum makecache

# 验证
yum repolist

1.3 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2
  • yum-utils:提供 yum-config-manager 工具,用于管理 YUM 软件源
  • device-mapper-persistent-data:Docker 存储驱动依赖,管理容器文件系统层
  • lvm2:逻辑卷管理工具,Docker 利用 LVM 管理容器存储空间

1.4 添加 Docker 国内软件源(手写 repo 文件,必做)

⚠️ 重要:不要使用 yum-config-manager --add-repo 添加 Docker 源。

无论从阿里云还是清华下载的 docker-ce.repo,都是 Docker 官方提供的模板文件,其内部 baseurl 写死为 https://download.docker.com/...。yum-config-manager --add-repo 只是把这个模板下载到 /etc/yum.repos.d/,并不会改写 baseurl。最终 yum install 仍会连接官方 download.docker.com,在国内网络下会出现 SSL 连接错误(Curl error (35): SSL connect error)导致元数据下载失败。

正确做法:直接手写 repo 文件,把 baseurl 指向国内镜像。

# 1. 删除可能存在的官方模板 repo(若之前用 yum-config-manager 添加过)
sudo rm -f /etc/yum.repos.d/docker-ce.repo

# 2. 手写 repo 文件,baseurl 直接指向阿里云镜像(CentOS 8 路径写死为 8)
sudo tee /etc/yum.repos.d/docker-ce.repo > /dev/null <<'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

# 3. 清缓存并重建元数据
sudo yum clean all
sudo yum makecache

repo 文件配置项说明:

配置项 值 说明
baseurl https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/ 真正的包下载地址,指向阿里云。路径中 8 写死,因为 CentOS 8 官方源已 EOL,仅镜像站留存 8 目录
gpgkey https://mirrors.aliyun.com/docker-ce/linux/centos/gpg GPG 公钥地址,同样走阿里云,避免再连官方
gpgcheck=1 开启 校验包签名,保证来源可信

备选镜像源(若阿里云不通,替换 baseurl 和 gpgkey 中的域名即可):

  • 清华:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/8/x86_64/stable/
  • 中科大:https://mirrors.ustc.edu.cn/docker-ce/linux/centos/8/x86_64/stable/

1.5 安装 Docker 核心组件

sudo yum -y --setopt=install_weak_deps=False install docker-ce docker-ce-cli containerd.io docker-compose-plugin

若安装时提示 containerd.io 冲突,手动安装兼容版本:

sudo yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-1.6.32-3.1.el8.x86_64.rpm

注意: docker-compose-plugin 为 Docker Compose V2 插件,安装后使用 docker compose 命令(无横线),与旧版 docker-compose(独立二进制)不同。若系统未自带此包,可手动安装:

mkdir -p /usr/local/lib/docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

1.6 配置 Docker 守护进程(生产级,必做)

修改 /etc/docker/daemon.json(如不存在则新建):

vi /etc/docker/daemon.json

写入以下内容:

{
  "registry-mirrors": [
    "https://42umn7hx.mirror.aliyuncs.com",
    "https://docker.1panel.live",
    "https://docker.m.daocloud.io",
    "https://mirror.iscas.ac.cn"
  ],
  "data-root": "/data/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "live-restore": true,
  "storage-driver": "overlay2"
}

生产级配置项说明:

配置项 说明
registry-mirrors 国内镜像加速器,加速镜像拉取
data-root Docker 数据目录迁移到数据盘(/data/docker),避免系统盘被撑满。需提前创建目录并确保有足够空间
log-driver + log-opts 限制容器日志大小为 100MB × 3 个文件,防止容器日志无限增长撑爆磁盘
live-restore Docker 守护进程重启时容器不中断,保证服务可用性
storage-driver 使用 overlay2 存储驱动(推荐,性能最优)

Docker 数据目录迁移操作(如系统盘空间不足):

注意: 若为全新安装(/var/lib/docker/ 不存在或为空),可跳过第 3 步数据迁移,直接创建目标目录后启动 Docker 即可。

# 1. 停止 Docker
sudo systemctl stop docker

# 2. 创建目标目录
sudo mkdir -p /data/docker

# 3. 迁移已有数据(若 Docker 无历史数据,跳过此步)
# 方式 A:使用 rsync(需先安装:yum install -y rsync)
sudo rsync -avz /var/lib/docker/ /data/docker/
# 方式 B:使用 cp(无需额外安装)
sudo cp -rp /var/lib/docker/* /data/docker/

# 4. 启动 Docker(daemon.json 中已配置 data-root)
sudo systemctl start docker

# 5. 验证迁移成功
docker info | grep "Docker Root Dir"
# 应输出:Docker Root Dir: /data/docker

重新加载配置并重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证加速器是否生效(查看 Registry Mirrors 字段):

sudo docker info

1.7 启动并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl enable containerd

验证是否已开启开机自启:

systemctl is-enabled docker
# 输出 enabled 表示已开启,输出 disabled 表示未开启

1.8 验证安装

sudo docker pull hello-world
sudo docker run hello-world

输出 “Hello from Docker!” 即安装成功。

1.9 配置 Docker 用户权限(按需配置)

何时需要配置:

  • 单人运维 / 测试环境:无需配置,直接使用 root 操作即可,跳过本节
  • 多人协作的生产环境:建议配置,避免所有人共享 root 密码,按用户分配权限,操作可审计

默认情况下,执行 docker 命令需要 sudo,因为 Docker 守护进程绑定的 Unix socket 只有 root 和 docker 组用户有权限访问。将普通用户加入 docker 组后,该用户可直接执行 docker ps、docker compose up 等命令,无需每次加 sudo。

完整操作流程:

# 1. 创建普通用户并设置密码(如已存在可跳过)
#    useradd 创建用户,passwd 设置密码,两步必须一起执行
#    只执行 useradd 不执行 passwd,用户将处于密码锁定状态,无法通过密码登录
#    deploy 就是用户名,可以换成任意名称,如 admin、ops、zhangsan 等。
sudo useradd deploy
sudo passwd deploy
# 执行 passwd 后会交互式提示输入两次新密码(屏幕不显示)

# 2. 创建 docker 组(通常已自动创建,可跳过)
sudo groupadd docker

# 3. 将用户加入 docker 组
sudo usermod -aG docker deploy

# 4. 使组变更立即生效(需用对应用户登录后执行)
newgrp docker

# 5. 验证(切换到该用户后,无需 sudo)
su - deploy
docker ps

安全提示: 加入 docker 组等同于拥有 root 权限,仅将可信用户加入该组。

用户管理补充命令:

# 修改用户密码
sudo passwd deploy

# 删除用户(保留家目录)
sudo userdel deploy

# 删除用户及家目录
sudo userdel -r deploy

2. Docker 常用命令速查

# 服务管理
systemctl status docker          # 查看 Docker 状态
systemctl stop docker            # 停止 Docker
systemctl restart docker         # 重启 Docker
docker --version                 # 查看版本
docker info                      # 查看 Docker 系统信息(存储驱动、数据目录等)

# 镜像管理
docker images                    # 查看镜像列表
docker rmi <镜像ID>              # 删除镜像
docker image prune               # 清理无用的悬空镜像

# 容器管理
docker ps -a                     # 查看所有容器
docker ps                        # 查看运行中的容器
docker stop <容器ID/名称>        # 停止容器
docker rm <容器ID/名称>          # 删除容器
docker exec -it <容器ID> /bin/bash  # 进入容器
docker logs -f --tail=100 <容器名称>  # 实时查看最后100行日志

# 系统清理
docker system df                 # 查看 Docker 磁盘使用情况
docker system prune              # 清理未使用的容器、网络、镜像
docker volume prune              # 清理未使用的卷
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。