Linux Docker与Docker Compose安装完全指南:在线与离线方案(x86/ARM64)
本文提供全面的Docker和Docker Compose安装指南,涵盖x86/ARM64架构及在线/离线环境。详细介绍了在CentOS/RHEL和Ubuntu/Debian系统上的在线安装步骤,包括依赖处理、版本选择和镜像加速配置。对于离线环境,给出了二进制包下载地址和安装脚本使用方法。同时还包含Docker Compose的安装指导,以及多架构支持注意事项。通过系统要求检查、服务配置和验证方法,
引言
Docker作为容器化技术的领军者,已成为开发和运维不可或缺的工具。在Linux系统中安装Docker和Docker Compose看似简单,但在不同架构(x86/ARM64)和网络环境(在线/离线)下仍存在诸多注意事项。本文将提供最全面的安装指南,涵盖在线安装、离线部署、多架构支持及常见问题解决,帮助读者在各种环境中快速部署稳定的Docker环境。
一、环境准备与兼容性检查
1.1 支持的Linux发行版
| 发行版 | 版本要求 | 架构支持 | 包管理工具 |
|---|---|---|---|
| CentOS | 7.6+ | x86_64, ARM64 | yum/dnf |
| Ubuntu | 18.04+ | x86_64, ARM64 | apt |
| Debian | 10+ | x86_64, ARM64 | apt |
| openEuler | 20.03+ | x86_64, ARM64 | yum/dnf |
| Fedora | 32+ | x86_64, ARM64 | dnf |
1.2 系统要求
- 内核版本:3.10+(推荐4.18+)
- 内存:至少2GB RAM
- 存储:至少10GB可用空间
- 架构:x86_64或ARM64(aarch64)
1.3 架构确认
# 查看系统架构
uname -m # x86_64或aarch64
uname -r # 内核版本
cat /etc/os-release # 操作系统信息
二、Docker在线安装
2.1 CentOS/RHEL系列
2.1.1 安装依赖
# 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker源(阿里云)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新缓存
sudo yum makecache fast
2.1.2 安装Docker Engine
# 列出可用版本
yum list docker-ce --showduplicates | sort -r
# 安装指定版本(推荐稳定版)
sudo yum install -y docker-ce-20.10.24-3.el7
# 或安装最新版
sudo yum install -y docker-ce
2.1.3 启动并设置自启
# 启动Docker
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 验证状态
sudo systemctl status docker
docker --version
2.2 Ubuntu/Debian系列
2.2.1 安装依赖
# 更新apt包索引
sudo apt-get update
# 安装依赖包
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
2.2.2 添加Docker GPG密钥和源
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加Docker源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新apt包索引
sudo apt-get update
2.2.3 安装Docker Engine
# 列出可用版本
apt-cache madison docker-ce
# 安装指定版本
sudo apt-get install -y docker-ce=5:20.10.24~3-0~ubuntu-focal
# 或安装最新版
sudo apt-get install -y docker-ce
2.3 配置镜像加速
# 创建配置目录
sudo mkdir -p /etc/docker
# 配置阿里云镜像加速(替换为自己的加速地址)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://14pfyl2z.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
三、Docker Compose在线安装
3.1 下载二进制文件
# 下载最新稳定版(访问https://github.com/docker/compose/releases获取最新版本)
DOCKER_COMPOSE_VERSION="v2.17.2"
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 为ARM64架构单独处理(如果上述命令失败)
if [ $(uname -m) = "aarch64" ]; then
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-aarch64" -o /usr/local/bin/docker-compose
fi
3.2 设置执行权限
# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 创建软链接(如果/usr/local/bin不在PATH中)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 验证安装
docker-compose --version
四、离线安装方案
4.1 离线安装包准备
4.1.1 Docker离线包下载
访问Docker官方静态二进制包页面下载对应架构的Docker二进制包:
- x86_64:https://download.docker.com/linux/static/stable/x86_64/
- ARM64:https://download.docker.com/linux/static/stable/aarch64/
推荐版本:docker-20.10.24.tgz
4.1.2 Docker Compose离线包下载
访问Docker Compose发布页面下载对应架构的二进制文件:
- 文件名格式:docker-compose-Linux-x86_64 或 docker-compose-Linux-aarch64
4.2 离线安装Docker
4.2.1 安装脚本(适用于x86_64和ARM64)
创建install-docker.sh脚本:
#!/bin/bash
# Docker离线安装脚本
if [ $# -ne 1 ]; then
echo "用法: $0 <docker-tar-file>"
exit 1
fi
DOCKER_TAR=$1
# 检查文件是否存在
if [ ! -f "$DOCKER_TAR" ]; then
echo "错误: 文件 $DOCKER_TAR 不存在"
exit 1
fi
# 解压Docker二进制包
echo "正在解压Docker二进制包..."
sudo tar -zxvf "$DOCKER_TAR" -C /tmp/
# 复制二进制文件到/usr/bin
echo "正在安装Docker二进制文件..."
sudo cp /tmp/docker/* /usr/bin/
# 创建Docker服务文件
echo "正在创建Docker服务..."
sudo tee /etc/systemd/system/docker.service <<-'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动并设置开机自启
echo "正在启动Docker服务..."
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
echo "Docker安装完成,版本信息:"
docker --version
echo "Docker服务状态:"
sudo systemctl status docker --no-pager
4.2.2 执行安装
# 上传docker-20.10.24.tgz和install-docker.sh到服务器
chmod +x install-docker.sh
sudo ./install-docker.sh docker-20.10.24.tgz
4.3 离线安装Docker Compose
# 上传docker-compose二进制文件到服务器
sudo cp docker-compose-Linux-$(uname -m) /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
4.4 离线安装包制作(高级)
如果需要为多台服务器制作离线安装包,可以使用以下脚本:
#!/bin/bash
# Docker离线安装包制作脚本
VERSION="20.10.24"
ARCH=$(uname -m)
DOCKER_TAR="docker-${VERSION}.tgz"
COMPOSE_VERSION="v2.17.2"
# 下载Docker二进制包
wget "https://download.docker.com/linux/static/stable/${ARCH}/${DOCKER_TAR}"
# 下载Docker Compose
if [ "$ARCH" = "x86_64" ]; then
COMPOSE_ARCH="x86_64"
elif [ "$ARCH" = "aarch64" ]; then
COMPOSE_ARCH="aarch64"
else
echo "不支持的架构: $ARCH"
exit 1
fi
wget "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-Linux-${COMPOSE_ARCH}" -O docker-compose
# 创建安装脚本(使用前面的install-docker.sh)
# 创建压缩包
tar -czvf "docker-offline-${VERSION}-${ARCH}.tar.gz" ${DOCKER_TAR} docker-compose install-docker.sh
echo "离线安装包创建完成: docker-offline-${VERSION}-${ARCH}.tar.gz"
五、Docker服务配置优化
5.1 修改数据存储路径
默认情况下,Docker数据存储在/var/lib/docker,可修改为其他路径:
# 创建新目录
sudo mkdir -p /data/docker
# 停止Docker服务
sudo systemctl stop docker
# 迁移现有数据(如果需要)
sudo rsync -avz /var/lib/docker/ /data/docker/
# 修改Docker服务配置
sudo tee /etc/systemd/system/docker.service.d/override.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph /data/docker
EOF
# 重新加载配置并启动
sudo systemctl daemon-reload
sudo systemctl start docker
5.2 配置日志轮转
# 创建或修改daemon.json
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重启Docker
sudo systemctl restart docker
5.3 配置HTTP代理(如果需要)
# 创建systemd代理配置
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=https://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF
# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
六、验证安装与基本操作
6.1 验证Docker安装
# 检查Docker版本
docker --version
# 运行hello-world容器
sudo docker run --rm hello-world
# 查看Docker信息
docker info
6.2 验证Docker Compose安装
创建docker-compose.yml文件:
version: '3'
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
restart: always
启动服务:
docker-compose up -d
docker-compose ps
curl http://localhost
docker-compose down
七、卸载Docker
7.1 标准卸载
CentOS/RHEL:
# 停止服务
sudo systemctl stop docker
sudo systemctl disable docker
# 卸载包
sudo yum remove -y docker-ce docker-ce-cli containerd.io
# 删除数据
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Ubuntu/Debian:
# 停止服务
sudo systemctl stop docker
sudo systemctl disable docker
# 卸载包
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io
# 删除数据
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
7.2 离线安装的卸载
# 停止容器和服务
sudo docker stop $(docker ps -aq)
sudo docker rm $(docker ps -aq)
sudo systemctl stop docker
sudo systemctl disable docker
# 删除二进制文件
sudo rm -f /usr/bin/docker /usr/bin/dockerd /usr/bin/containerd /usr/bin/containerd-shim /usr/bin/runc
# 删除服务文件
sudo rm -f /etc/systemd/system/docker.service
sudo systemctl daemon-reload
# 删除数据目录
sudo rm -rf /var/lib/docker /data/docker
# 删除Docker Compose
sudo rm -f /usr/local/bin/docker-compose
八、常见问题解决
8.1 启动失败:找不到命令
问题:docker: command not found
解决方案:
# 检查Docker二进制文件是否在PATH中
echo $PATH
ls -l /usr/bin/docker*
# 如果不在PATH中,创建软链接
sudo ln -s /usr/bin/docker /usr/local/bin/docker
8.2 权限问题:Permission denied
问题:Got permission denied while trying to connect to the Docker daemon socket
解决方案:
# 添加当前用户到docker组
sudo usermod -aG docker $USER
# 注销并重新登录,或执行以下命令立即生效
newgrp docker
8.3 镜像拉取失败
问题:拉取镜像超时或失败
解决方案:
# 检查镜像加速配置
cat /etc/docker/daemon.json
# 重启Docker服务
sudo systemctl restart docker
# 手动拉取测试
docker pull busybox
8.4 离线安装后无法启动
问题:Job for docker.service failed because the control process exited with error code
解决方案:
# 查看详细日志
journalctl -xeu docker.service
# 常见原因:SELinux限制
sudo setenforce 0 # 临时关闭SELinux
# 或永久关闭:修改/etc/selinux/config,设置SELINUX=disabled
# 常见原因:数据目录权限
sudo chmod -R 777 /var/lib/docker
九、最佳实践与注意事项
9.1 版本选择建议
- 生产环境:选择LTS版本(如20.10.x),避免使用最新版
- 版本兼容性:Docker Compose版本应与Docker Engine版本匹配
- 升级策略:小版本可直接升级,跨大版本建议先卸载再安装
9.2 安全最佳实践
- 非root用户:将用户添加到docker组,避免直接使用root
- 镜像安全:只使用可信镜像,定期更新基础镜像
- 资源限制:为容器设置CPU和内存限制
- 网络隔离:使用自定义网络隔离不同应用
9.3 性能优化建议
- 存储驱动:生产环境推荐使用overlay2
- 内存配置:为Docker分配足够内存(至少2GB)
- 日志管理:配置日志轮转,避免磁盘占满
- 镜像清理:定期清理未使用的镜像和容器
十、总结
本文详细介绍了在Linux系统中安装Docker和Docker Compose的完整方案,包括在线安装、离线部署、多架构支持及常见问题解决。通过本文的指南,读者可以在不同Linux发行版(CentOS、Ubuntu等)和硬件架构(x86_64、ARM64)上成功部署Docker环境,无论是有网络的在线环境还是无网络的离线环境。
关键要点:
- 在线安装适合有网络环境的服务器,步骤简单但依赖网络
- 离线安装适合无网络环境,需要提前准备二进制包
- 不同架构(x86/ARM)需要选择对应版本的安装包
- 安装后需进行必要的配置优化,如镜像加速、数据存储路径等
- 遵循安全和性能最佳实践,确保Docker环境稳定高效
随着容器技术的不断发展,Docker仍然是容器化部署的重要工具。掌握Docker的安装和基础配置,是进行容器化应用开发和运维的基础。希望本文能帮助读者快速搭建稳定可靠的Docker环境。
参考资料:
更多推荐



所有评论(0)