当前位置: 首页 > news >正文

Docker 离线安装

在某些生产环境或内网服务器中,无法直接访问互联网下载软件包。本文将详细介绍如何在 无网络连接 的 Linux 系统上,通过离线方式安装 Docker 引擎Docker Compose,并提供一键安装与卸载脚本。


📦 所需文件清单

在开始安装前,请确保你已准备好以下三个文件,并统一放置在 package/ 目录下:

  • docker-<version>.tgz:Docker 引擎二进制压缩包(例如 docker-28.3.3.tgz
  • docker-compose-linux-x86_64:Docker Compose 可执行文件
  • docker.service:Systemd 服务配置文件

💡 提示:所有文件应打包为 install-docker-<version>.tar,便于分发与部署。


🔽 获取安装包(在有网络的机器上操作)

1. 下载 Docker 引擎

Docker 官方提供静态编译的二进制包,适用于大多数 Linux 发行版:

# 查看所有版本
https://download.docker.com/linux/static/stable/x86_64/# 直接下载指定版本(示例)
wget https://download.docker.com/linux/static/stable/x86_64/docker-28.3.3.tgz

✅ 推荐使用稳定版本(如 27.x、28.x),避免使用过新或过旧的版本。


2. 下载 Docker Compose

Docker Compose 的二进制文件托管在 GitHub Releases:

# 示例:下载 v2.40.1 版本
wget https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64

⚠️ 注意:Docker Compose v2 以后以插件形式集成到 docker compose 命令中,但为兼容性考虑,本文仍使用独立的 docker-compose 二进制文件。


3. 创建 docker.service 文件

创建 systemd 服务文件,用于管理 Docker 守护进程:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=5
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-1000[Install]
WantedBy=multi-user.target

🔒 此配置已优化资源限制与安全策略,适用于生产环境。


🛠️ 安装脚本:install-docker.sh

将以下脚本与上述三个文件一起打包。在目标服务器上执行即可完成安装。

#!/usr/bin/env bashsetenforce 0 2>&1set -esed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configchmod a+x ./package/*docker_package=$(find . -name "*docker*.tgz" | grep -oE '[^/]+\.tgz$')if [ "$EUID" -ne 0 ]then echo "Please use ROOT user"exit
fifunction install_docker() {if which docker >/dev/null; thenecho -e "---------- docker has installed  ----------"elseecho -e "----------  install Docker  ----------"tar -zxf ./package/$docker_package -C ./package/cp -f ./package/docker/* /usr/bin/cp -f ./package/docker.service /usr/lib/systemd/system/chmod a+x /usr/bin/docker*chmod 754 /usr/lib/systemd/system/docker.serviceecho -e "----------  Start Docker  ----------"systemctl daemon-reload 2>&1systemctl start docker 2>&1systemctl enable docker 2>&1	fi
}function install_docker_compose() {if which docker-compose >/dev/null; thenecho -e "---------- docker-compose has installed  ----------"elif which docker compose >/dev/null; thenecho -e "---------- docker compose has installed  ----------"elseecho -e "----------  install docker-compose  ----------"	cp -f ./package/docker-compose-linux-x86_64 /usr/bin/docker-composefi
}install_docker
install_docker_composeecho "Docker 离线安装完成!"

🧹 卸载脚本:uninstall-docker.sh

如需清理环境,可使用以下卸载脚本:

#!/usr/bin/env bash
set -e
container_runtime=docker
if [[ -f  /usr/lib/systemd/system/${container_runtime}.service ]]; then
systemctl stop ${container_runtime} 2>&1
systemctl disable ${container_runtime}
firm -f /usr/bin/{containerd,containerd-shim,containerd-shim-runc-v2,ctr,docker,docker-compose,dockerd,docker-init,docker-proxy,runc,nerdctl}
rm -f /usr/lib/systemd/system/${container_runtime}.serviceecho "Docker 已卸载完成"

📦 打包与部署流程

  1. 在有网络的机器上准备安装包

    mkdir -p install-docker/package
    cp docker-28.3.3.tgz install-docker/package/
    cp docker-compose-linux-x86_64 install-docker/package/
    cp docker.service install-docker/package/
    cp install-docker.sh install-docker/
    cp uninstall-docker.sh install-docker/
    
  2. 打包

    tar -czf install-docker-28.tar.gz install-docker/
    
  3. 将压缩包拷贝到目标服务器,并执行:

    tar -xzf install-docker-28.tar.gz
    cd install-docker
    sudo bash install-docker.sh
    

✅ 验证安装

docker --version
docker-compose --version
systemctl status docker

若输出版本信息且服务状态为 active (running),说明安装成功!


📝 小结

本文提供了一套完整、可复用的 Docker 离线安装方案,适用于内网、安全隔离或无外网访问权限的生产环境。通过标准化脚本与文件结构,可大幅降低部署复杂度,提升运维效率。

🌐 参考链接

  • Docker 官方静态包下载
  • Docker Compose Releases

http://www.dtcms.com/a/523536.html

相关文章:

  • CUDA和cuDNN安装
  • 一篇初识什么是容器,引出 Docker
  • HTML 理论笔记
  • 《Linux系统编程之入门基础》【权限管理】
  • ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案
  • 网站建设金手指排名霸屏主机类型wordpress
  • uniapp微信小程序简单表格展示
  • 【html】每日打卡页面
  • Server 15 ,VMware ESXi 实战指南:Ubuntu 20.04.6 版本虚拟机静态 IP 配置、分辨率固定及远程访问实践
  • 吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(三)
  • Copilot使用体验
  • uniapp video 加载完成后全屏播放
  • 从MongoDB到国产数据库:一场2TB电子证照系统的“平滑着陆”实践
  • 电子商务网站开发与建设试卷wordpress如何删除已安装主题
  • 内蒙古城乡建设网站免费详情页模板网站
  • Android EDLA开发认证说明和开发流程
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(三)
  • UniApp缓存系统详解
  • 【LLM】用 FastAPI 搭建「OpenAI 兼容」DeepSeek-OCR 服务 + 简洁WebUI
  • 企业内部SRE/DevOps向精通Linux课程培训大纲
  • 《Effective Java》第13条:谨慎的覆盖clone
  • 第一章、React + TypeScript + Webpack项目构建
  • 前端:金丝雀部署(Canary Deployment)/ A、B部署 / 灰度部署
  • Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
  • 宁波公司网站建设价格dw建设手机网站
  • 长沙做网站价格有哪些网站可以做青旅义工
  • 怎么查看网站打开速度企业网站用vps还是虚拟主机
  • Vue3 模板引用——ref
  • XGBoost完整学习指南:从数据清洗到模型调参
  • 【深度学习新浪潮】AI Agent工具流产品:从原理到落地,打造智能协作新范式