服务器docker基础环境安装
基础环境安装
本文档为「拾壹博客项目部署方案」系列文档之一,涵盖 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 # 清理未使用的卷
- 点赞
- 收藏
- 关注作者
评论(0)