Docker与Compose安装全指南:在线离线、镜像加速与避坑实践 📅 发布时间:2026/9/8 10:05:25 👁 浏览次数: 简介面向 x86 Linux 环境的 Docker 与 Docker Compose 离线安装包适合开发、测试和运维人员在无法直连外网、需定制镜像仓库或要统一下发部署时使用。rar 压缩包内共 4 个文件Docker 27.3.1 的 tgz 二进制压缩包可直接解压以获得 docker 主程序docker.service 单元文件用于将 Docker 注册为 systemd 系统服务实现开机自启与统一管理install.sh 一键安装脚本自动完成解压、服务配置和路径写入减少手工操作docker-compose 可执行组件便于通过 YAML 定义并编排多容器应用。整体约 84.53MB文件结构清晰按脚本顺序执行即可完成基础部署。当前已有 264 人学习下载。借助这套资源读者能快速搭建可离线复用的容器运行环境既保持开发、测试与生产环境一致又避免了逐项检索依赖的麻烦配合服务文件和 Compose 工具还能在多台服务器上批量初始化、批量启动多容器项目大幅提升交付效率。1. 安装包选型和准备工作先把路子理顺做运维和开发的兄弟应该都有同感Docker 本身已经不单单是装个容器这么简单了它已经成了本地开发、CI/CD、服务部署整个链条里的基础设施。而 docker-compose现在官方更推荐叫 Docker Compose Plugin解决的问题也很直接当你的项目依赖 MySQL、Redis、Nginx、后端服务这一大堆容器的时候一条命令全部拉起来省去手动 docker run 写一长串参数的痛苦。先说结论如果你是 Windows 用户直接装 Docker Desktop 是最省心的路子如果你是 Linux 服务器尤其是 CentOS 7、Ubuntu 22.04 这类用包管理器装 Docker Engine再单独装 docker-compose 插件如果你在麒麟、统信这类国产化系统上离线部署那就得提前准备好离线安装包不然折腾死你。这篇博文我把三种场景全都捋一遍包括安装包怎么选、国内镜像源怎么配、docker-compose 版本坑怎么避、以及我在实际部署中踩过的那些坑。适合刚入门的、也适合已经在用但想优化安装流程的朋友。动手之前有几件事必须先想明白不然装到一半容易卡壳。1.1 确认操作系统和内核版本Docker 对内核版本有硬性要求旧版本尤其明显Linux 内核低于 3.10 基本跑不起来。Windows 上则要求 Win10 64 位专业版/企业版/教育版家庭版也能装但要用 WSL2 还得额外配置而且必须在 BIOS 里开启虚拟化。macOS 这边要求 2010 年之后的机型并且系统版本不能太老。检查 Linux 内核版本直接执行uname -r我遇到过不止一次CentOS 7 默认内核 3.10.0装完 Docker 20.10 之后有个别内核模块加载异常cgroup 相关功能不完整容器启不来。这种情况与其跟内核较劲不如直接升级内核到 5.x或者用 Docker 官方推荐的 CentOS 自带yum install docker-ce能装上的最新版本问题会少很多。1.2 确定安装方式在线、离线还是桌面版安装包的选择跟你的网络环境强绑定。开发机上网络通畅直接走官方源或国内镜像源在线安装生产内网环境没外网就得在能联网的机器上把 rpm/deb 包和 compose 二进制全拉下来打包带进去Windows 用户如果不想装 Docker Desktop比如机器配置一般、虚拟机占用太高也可以只装 Docker CLI 远程连接到 Linux 主机上的 Docker daemon这种方式适合做远程开发调试。我的建议是先把场景定下来再往下走别上来就一把梭。2. Linux 下 Docker 安装包的获取与安装全流程Linux 下装 Docker 我一般分两类有外网的和没外网的。两类场景我都跑过很多次下面把命令和思路都给全。2.1 有外网环境官方源 国内镜像源加速先说 Ubuntu / Debian 系。官方文档给的那套流程本身没问题但国内机器直接访问 download.docker.com 经常慢成蜗牛时间全浪费在下载上。所以我把源地址替换成清华或者阿里云的镜像站速度快了几个数量级。Ubuntu 的安装步骤以 22.04 为例一条条来# 安装依赖 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release # 添加 Docker 官方 GPG 密钥用国内镜像源拉取 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 写入软件源阿里云镜像 echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 正式安装 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin注意最后一条命令里的docker-compose-plugin这个就是官方推荐的新版 Compose V2 插件。装完以后直接用docker compose version验证注意没有中间的横杠了。CentOS / RHEL 系的操作思路一样只是包管理器从 apt 换成 yum/dnf软件源地址指向阿里云sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 启动并设置开机自启 sudo systemctl enable docker --now装完以后docker info看一眼确认运行状态正常再做镜像加速。2.2 离线环境打包依赖传进去装内网服务器没有外网是最让人头疼的场景尤其是国产化环境——麒麟、统信、中科方德这些网上教程还少很多坑只能自己趟。我总结出一套通用打法找一台和离线机器操作系统完全一致、位数一致的联网机器下载好所有依赖包打成 tar 包带进去。以 CentOS 7.9 为例在联网机器上下载# 创建目录存放所有 rpm 包 mkdir -p /opt/docker-offline cd /opt/docker-offline # 只下载不安装这里用 yumdownloader 或 dnf download yum install -y yum-utils yumdownloader --resolve docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras # 打成一个包 tar czf docker-offline-centos7.tar.gz *.rpm把 tar 包拷到内网服务器上解压后执行tar xzf docker-offline-centos7.tar.gz yum localinstall -y *.rpm如果是麒麟系统命令风格跟 CentOS 接近但又有差异建议直接用rpm -ivh *.rpm --nodeps强行装但一定要提前把依赖库补齐比如libcgroup、iptables、device-mapper-persistent-data这些缺哪个补哪个。装完检查一下systemctl daemon-reload systemctl start docker systemctl enable docker docker version2.3 安装后的必做配置镜像加速这一步不做你在国内拉镜像基本就是煎熬。Docker 默认的 Docker Hub 镜像源速度慢不说还经常超时。我一般直接配置/etc/docker/daemon.json写入国内镜像源地址{ registry-mirrors: [ https://docker.m.daocloud.io, https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ] }然后重启 Dockersystemctl daemon-reload systemctl restart docker加速这玩意儿不一定每个源都稳定像中科大源偶尔会挂所以我建议多填几个尽量排在前面的是相对能用的。也可以用阿里云容器镜像服务的专属加速地址每个人账号都有一个专属域名这个速度最稳。3. docker-compose 安装包获取别再用老一套 pip 装了docker-compose 的安装是重灾区很多老教程还在让你用pip install docker-compose这种装法装的是 Python 版的 Compose V1官方早就停止维护了。现在统一用 V2 插件形式要么装docker-compose-plugin包要么直接下载二进制放到 PATH 里二选一。3.1 包管理器安装首选最省事的方式就是跟 Docker 一起装。Ubuntu 用 apt、CentOS 用 yum安装 docker 时把docker-compose-plugin一并装上就行这就是官方源里的标准包版本跟随 Docker Engine 一起更新不需要单独管。这是我最推荐的安装方式没有之一。docker compose version看到类似Docker Compose version v2.24.x的输出说明就位了。3.2 手动下载二进制需要特定版本时用有时候官方源里的 compose 版本滞后或者你需要升到指定版本来匹配项目里的version字段定义这时就得从 GitHub 直接拉二进制了# 以 v2.24.5 为例 DOCKER_COMPOSE_VERSIONv2.24.5 curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose但这里有个坑从 GitHub 下载在国内经常慢到没脾气。所以我一般建议去国内镜像站拉比如把地址改成https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/...这种代理前缀速度快很多。也可以用阿里云、腾讯云的镜像仓库各有各的加速域名。3.3 版本管理和升级的正确姿势想升级 docker-compose 到指定版本我踩过的坑是直接用docker compose version检查当前版本如果在 2.x 以下优先卸载旧的 Python 版本。# 卸载旧版本如果是 pip 装的 pip uninstall docker-compose # 升级到指定版本以 2.23.x 为例 curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose docker-compose version重点V2 版本的二进制文件名是docker-compose-linux-x86_64如果你在 ARM 机器比如树莓派、华为鲲鹏上装要换成docker-compose-linux-aarch64。这个我吃过亏文件下下来一执行就提示Exec format error折腾半天才想起来架构不对。4. Windows 环境安装到底用 Docker Desktop 还是分离方案Windows 装 Docker 是新手问得最多的。Docker Desktop 自带 Docker Engine、Compose V2、Kubernetes 单机版、图形化管理界面安装包直接从官网拉就行。安装包下载慢的问题可以通过配置 Windows 上的 hosts 或使用代理解决实在不想折腾就找国内下载站分流。4.1 Docker Desktop 的安装细节Docker Desktop 的安装过程本身不复杂但它依赖 WSL2 或者 Hyper-V这个前置条件不能忽略。建议先装好 WSL2wsl --install wsl --set-default-version 2然后下载 Docker Desktop Installer.exe双击安装。安装完启动首次启动会提示需要启用 WSL 内核更新按提示下载 wsl_update_x64.msi 装上就好。Docker Desktop 装好以后自带docker-compose命令不需要额外安装这是它方便的地方。日常使用中我比较推荐在 Windows 上把文件放在 WSL2 的 Linux 文件系统里不要放在/mnt/c/...这种挂载目录下因为跨文件系统的 IO 性能损耗非常明显。以前有个项目在 Windows 目录下挂载到容器构建一次要五分钟挪到 WSL2 目录里两分钟搞定。4.2 不装 Docker Desktop 的方案如果你跟我一样不太想让 Docker Desktop 常驻系统托盘占内存或者你的 Windows 版本不支持 Hyper-V那就换个思路装 Docker CLI 远程连到一台 Linux 机器上的 Docker daemon。大致流程是Windows 上用 chocolatey 装 docker-clichoco install docker-cli或者直接下载 docker.exe 放到 PATH 里然后用环境变量指向远程主机$env:DOCKER_HOST tcp://192.168.1.100:2375 docker ps不过这个方案涉及 Docker daemon 的安全配置远程端口不能裸奔必须启用 TLS 认证不然别人扫到你的 2375 端口就麻烦了。小白可以先用 Docker Desktop进阶再考虑这种玩法。5. 实操案例用 docker-compose 一键拉起常用基础服务安装包配置好之后就该让 docker-compose 发挥真正的作用了。我直接放两个线上环境里跑得很稳的配置覆盖 MySQL 8.0 和 Redis 主从复制完全是生产可用级别的参考。5.1 MySQL 8.0 的 compose 配置写一个docker-compose.ymlservices: mysql8: image: mysql:8.0 container_name: mysql8 restart: always environment: MYSQL_ROOT_PASSWORD: YourStrongPass123 TZ: Asia/Shanghai ports: - 3306:3306 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf:/etc/mysql/conf.d - ./mysql/logs:/logs command: - --character-set-serverutf8mb4 - --collation-serverutf8mb4_unicode_ci - --lower_case_table_names1这里有个关键点MySQL 8.0 默认的认证插件是caching_sha2_password如果客户端比如老的 Navicat 版本、PHP 老驱动不支持连接会报错。解决方式是在命令里加一行--default-authentication-pluginmysql_native_password或者你接受新驱动只认新插件也行。我建议能升客户端就升客户端别在服务器上降低安全标准。5.2 Redis 主从复制的 compose 配置Redis 主从配置网上有各种版本我这个是实测稳定版services: redis-master: image: redis:7.0 container_name: redis-master restart: always ports: - 6379:6379 command: redis-server --appendonly yes --requirepass MasterPass123 redis-slave: image: redis:7.0 container_name: redis-slave restart: always depends_on: - redis-master ports: - 6380:6379 command: redis-server --slaveof redis-master 6379 --masterauth MasterPass123 --requirepass SlavePass123执行docker compose up -d等个几秒钟进入从节点验证一下docker exec -it redis-slave redis-cli -a SlavePass123 127.0.0.1:6379 info replication # Replication role:slave master_host:redis-master master_link_status:up看见master_link_status:up就说明主从关系已经建立数据在同步了。这套配置里最容易被忽略的是--masterauth参数主节点开启密码验证后从节点不配这个参数永远连不上主节点日志里只会反复刷MASTER - REPLICA sync started然后超时。5.3 镜像拉取慢的临时变通方案如果镜像加速配了还是慢尤其是拉 redis、mysql 这种常用基础镜像可以临时换个更具体的镜像源地址。举例把redis:7.0换成docker.m.daocloud.io/library/redis:7.0相当于手动指定加速源的完整路径。这个做法在测试环境救过我好几次虽然生产环境还是建议把镜像加速配置好。6. 安装和部署中的常见问题与排查技巧这部分我把实际运维中碰到过的、网上讨论热度也高的问题整理成一张速查表每个问题都附上排查思路不是只丢一句重启解决。6.1 常见问题速查表问题现象排查思路解决方案docker pull 卡住或超时镜像源不通或没配加速配置 daemon.json 加速地址换可用源重启 dockerdocker-compose 提示command not found二进制没进 PATH用which docker-compose查找软链到 /usr/local/bin/ 或 /usr/bin/执行 docker-compose 报Exec format error下载了错误架构的二进制确认机器架构x86_64 和 aarch64 选对版本Windows 下容器内访问宿主机服务失败WSL2 IP 变化导致用host.docker.internal代替 localhost 访问宿主机服务MySQL 容器启动后连接报认证错误caching_sha2_password 插件不兼容客户端升级驱动或降级用 mysql_native_passworddaemon.json 配置后 docker 启动失败JSON 格式错或源不可用docker info看报错逐行检查 JSON 语法去掉问题源Redis 从节点同步一直超时masterauth 没用对仔细核对主从配置中的 requirepass 和 masterauth6.2 我曾经踩过的几个印象深刻的坑第一个是麒麟系统下的 docker-compose 离线安装。麒麟和 CentOS 同源但软件仓库里的包名有差异docker-compose-plugin在麒麟仓库里搜不到只能自己下载官方静态二进制。然后静态二进制运行时依赖 glibc 版本麒麟 V10 的 glibc 是 2.28如果下载的 docker-compose 是用更高版本 glibc 编译的会出现version GLIBC_2.29 not found的报错。这个只能换老一点的 compose 版本或者换 Linux 版编译产物没别的办法。第二个是 Compose 文件里version字段的问题。旧教程里都写version: 3.8但 Compose V2 已经完全不看这个字段了文件里写了反而会在某些新版本里触发警告。我现在的习惯是直接删掉version行让它省心一点。第三个是docker-compose up -d已经跑起来的服务改了 yml 配置后忘了重新构建镜像。经常遇到同事改了环境变量说没生效其实就是用了旧缓存。规范操作是先docker compose down再用docker compose up -d --build重新拉起这样容器重建时才会真正加载新配置。6.3 给新手的入门建议最后我想说的是安装包这块其实没有太多玄学核心就两点一是选对系统对应的安装方式二是把镜像加速配置好。很多朋友一上来就卡在下载慢、源不通这些环境问题上其实换一个镜像地址就全通了没必要硬磕官方源。如果你平时就自己写代码、起几个容器做测试优先把 Docker Engine docker-compose-plugin 装好就够了桌面版不是必须的。如果你是尝试在 Windows 上做全套开发调试那 Docker Desktop 确实能帮你省掉大量环境隔离的麻烦前提是电脑内存够大不然跑几个容器就卡得不行。我实际用下来Linux 服务器上直接装引擎加插件是运行最稳、资源占用最少、长期维护最省心的方案这个选择到现在没后悔过。本文还有配套的精品资源点击获取