Docker二进制包部署完整指南
🎯 前言:本文将详细介绍如何使用Docker官方二进制包在Linux系统上手动部署Docker环境,包括Docker Engine、Docker Compose的完整安装配置过程,以及自定义存储路径的高级配置。适合运维工程师、系统管理员以及对Docker部署有深度定制需求的开发者。
📋 目录
- 1. 环境准备
- 2. 下载Docker二进制包
- 3. 安装Docker核心组件
- 4. 配置系统服务
- 5. 自定义存储路径
- 6. 安装Docker Compose
- 7. 验证安装
- 8. 常见问题及解决方案
1. 环境准备
系统要求
- 操作系统:Linux (Ubuntu 16.04+, CentOS 7+, Debian 9+)
- 架构:x86_64 (amd64)
- 内核版本:3.10+ (推荐 4.0+)
- 存储空间:至少 10GB 可用空间
检查系统信息
# 查看系统版本
cat /etc/os-release
# 查看内核版本
uname -r
# 查看系统架构
uname -m
# 检查磁盘空间
df -h
2. 下载Docker二进制包
2.1 官方下载地址
Docker Engine 二进制包下载:
# 创建下载目录
mkdir -p /tmp/docker-install && cd /tmp/docker-install
# 下载最新稳定版 Docker 二进制包
# 官方下载地址:https://download.docker.com/linux/static/stable/x86_64/
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
# 或者使用curl下载
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz -o docker-24.0.7.tgz
2.2 解压二进制包
# 解压下载的tar包
tar -xzf docker-24.0.7.tgz
# 查看解压后的文件
ls -la docker/
# 输出示例:
# containerd
# containerd-shim-runc-v2
# ctr
# docker
# dockerd
# docker-init
# docker-proxy
# runc
3. 安装Docker核心组件
3.1 复制二进制文件到系统路径
# 将所有Docker二进制文件复制到系统路径
sudo cp docker/* /usr/bin/
# 设置执行权限
sudo chmod +x /usr/bin/docker*
sudo chmod +x /usr/bin/containerd*
sudo chmod +x /usr/bin/ctr
sudo chmod +x /usr/bin/runc
# 验证文件复制
ls -la /usr/bin/docker*
3.2 创建Docker用户组
# 创建docker用户组
sudo groupadd docker
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
# 创建Docker工作目录
sudo mkdir -p /var/lib/docker
sudo mkdir -p /etc/docker
4. 配置系统服务
4.1 创建containerd系统服务
# 创建containerd服务配置文件
sudo tee /etc/systemd/system/containerd.service > /dev/null <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
EOF
4.2 创建Docker系统服务
# 创建docker服务配置文件
sudo tee /etc/systemd/system/docker.service > /dev/null <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
4.3 启动Docker服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动containerd服务
sudo systemctl start containerd
sudo systemctl enable containerd
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 检查服务状态
sudo systemctl status docker
sudo systemctl status containerd
5. 自定义存储路径
5.1 方法一:使用daemon.json配置文件(推荐)
# 创建自定义存储目录
sudo mkdir -p /data/docker-data
# 创建Docker配置文件
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"data-root": "/data/docker-data",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
# 重启Docker服务
sudo systemctl restart docker
5.2 方法二:修改systemd服务文件
# 修改Docker服务文件,添加--data-root参数
sudo sed -i 's|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --data-root=/data/docker-data|' /etc/systemd/system/docker.service
# 重新加载并重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
5.3 迁移现有数据(如果需要)
# 停止Docker服务
sudo systemctl stop docker
# 创建新的存储目录
sudo mkdir -p /data/docker-data
# 迁移现有数据
sudo rsync -aP /var/lib/docker/ /data/docker-data/
# 备份原目录
sudo mv /var/lib/docker /var/lib/docker.backup
# 重启Docker服务
sudo systemctl start docker
6. 安装Docker Compose
6.1 方法一:下载独立二进制文件(推荐)
# 获取最新版本号
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
# 下载Docker Compose二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
# 或者直接指定版本(推荐)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
# 设置执行权限
sudo chmod +x /usr/bin/docker-compose
# 创建软链接(可选)
sudo ln -sf /usr/bin/docker-compose /usr/local/bin/docker-compose
6.2 方法二:安装Docker Compose V2插件
# 创建插件目录
mkdir -p ~/.docker/cli-plugins/
# 下载Compose V2插件
curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o ~/.docker/cli-plugins/docker-compose
# 设置执行权限
chmod +x ~/.docker/cli-plugins/docker-compose
# 全局安装(可选)
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo cp ~/.docker/cli-plugins/docker-compose /usr/local/lib/docker/cli-plugins/
6.3 启用命令补全(可选)
# 下载命令补全脚本
sudo curl -L https://raw.githubusercontent.com/docker/compose/v2.23.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
# 重新加载bash补全
source /etc/bash_completion.d/docker-compose
7. 验证安装
7.1 验证Docker安装
# 检查Docker版本
docker --version
docker version
# 检查Docker系统信息
docker info
# 运行测试容器
docker run hello-world
# 查看Docker存储路径
docker info | grep "Docker Root Dir"
7.2 验证Docker Compose安装
# 检查Docker Compose版本
docker-compose --version
# 或者检查V2版本
docker compose version
# 查看帮助信息
docker-compose --help
7.3 创建测试项目
# 创建测试目录
mkdir -p ~/docker-test && cd ~/docker-test
# 创建测试的docker-compose.yml文件
cat > docker-compose.yml <<EOF
version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
redis:
image: redis:alpine
ports:
- "6379:6379"
EOF
# 创建测试页面
mkdir html
echo "<h1>Docker 部署成功!</h1>" > html/index.html
# 启动测试服务
docker-compose up -d
# 检查服务状态
docker-compose ps
# 测试访问
curl http://localhost:8080
# 清理测试环境
docker-compose down
8. 常见问题及解决方案
8.1 权限问题
问题:Got permission denied while trying to connect to the Docker daemon socket
解决方案:
# 确保用户在docker组中
sudo usermod -aG docker $USER
# 重新登录或执行
newgrp docker
# 检查docker.sock权限
sudo chmod 666 /var/run/docker.sock
8.2 服务启动失败
问题:Docker服务无法启动
解决方案:
# 查看详细错误日志
sudo journalctl -u docker.service -f
# 检查配置文件语法
sudo dockerd --validate
# 重置Docker配置
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/*
sudo systemctl start docker
8.3 存储空间不足
问题:No space left on device
解决方案:
# 清理无用的镜像和容器
docker system prune -a
# 查看磁盘使用情况
docker system df
# 修改存储路径到更大的磁盘
# 按照第5节的方法修改存储路径
8.4 网络连接问题
问题:无法拉取镜像或网络超时
解决方案:
# 配置国内镜像源
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启Docker服务
sudo systemctl restart docker
🎉 总结
通过本文的详细步骤,您已经成功完成了Docker的二进制包部署,包括:
✅ Docker Engine:核心容器运行时环境
✅ containerd:容器运行时管理
✅ Docker Compose:多容器应用编排工具
✅ 自定义存储:灵活的数据存储配置
✅ 系统服务:开机自启动和服务管理
这种部署方式的优势:
- 🔧 完全控制:对安装过程和配置有完全控制权
- 🎯 定制化:可以根据需求进行深度定制
- 🚀 性能优化:可以针对特定环境进行性能调优
- 🔒 安全性:避免了包管理器可能的安全风险
注意事项:
- 定期关注Docker官方更新,及时升级版本
- 建议在生产环境中配置日志轮转和监控
- 根据实际需求调整存储驱动和网络配置
💡 小贴士:如果您觉得本文对您有帮助,欢迎点赞收藏!有任何问题欢迎在评论区交流讨论。
相关文章推荐:
本文原创,转载请注明出处。