news 2026/10/26 19:09:41

Ubuntu系统离线安装Docker完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu系统离线安装Docker完整指南

1. 项目概述

在服务器运维和开发环境中,Docker已经成为不可或缺的基础设施。但很多企业内网环境或特殊场景下,服务器无法直接连接互联网进行在线安装。上周我在给某金融机构部署私有云平台时,就遇到了必须在Ubuntu x86_64系统上离线安装Docker的需求。经过反复测试验证,最终整理出这套稳定可靠的离线安装方案。

这个方案适用于Ubuntu 18.04/20.04/22.04等主流LTS版本,特别适合以下场景:

  • 金融、政务等安全要求高的内网环境
  • 生产环境需要严格版本控制的场景
  • 网络条件受限的远程服务器部署
  • 需要批量部署相同Docker版本的集群环境

重要提示:离线安装前请确保目标系统架构为x86_64(可通过uname -m命令验证),且系统已安装依赖的基础工具如tar、gzip等。

2. 准备工作与资源获取

2.1 离线安装包获取策略

离线安装Docker需要准备三个核心组件:

  1. Docker引擎安装包(docker-ce)
  2. Docker CLI工具
  3. Containerd容器运行时

推荐通过以下两种方式获取离线安装包:

方法一:官方仓库下载(推荐)

# 在有网络的机器上执行 mkdir docker-offline && cd docker-offline apt-get download docker-ce docker-ce-cli containerd.io

方法二:第三方镜像站下载如果官方源速度慢,可以使用阿里云镜像站:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64/ \ | grep -E 'docker-ce|containerd' \ | awk -F'"' '{print $2}' \ | xargs -I {} wget https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64/{}

2.2 依赖包完整性检查

下载完成后,应该包含以下关键文件(以Ubuntu 20.04为例):

docker-ce_24.0.2~ubuntu-focal_amd64.deb docker-ce-cli_24.0.2~ubuntu-focal_amd64.deb containerd.io_1.6.21-1_amd64.deb

常见问题:如果缺少libseccomp2等依赖包,会导致后续安装失败。建议同时下载:

  • libseccomp2_2.5.1-1ubuntu1~20.04.2_amd64.deb
  • docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb

3. 离线安装详细步骤

3.1 传输安装包到目标机器

将下载好的deb包通过U盘或内网传输到目标服务器。我通常使用scp命令:

scp -r docker-offline/ user@target-server:/tmp/

3.2 安装依赖环境

在目标服务器上执行:

sudo apt-get update sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release \ ./libseccomp2*.deb

3.3 安装Docker组件

按顺序安装关键组件:

sudo dpkg -i containerd.io*.deb sudo dpkg -i docker-ce-cli*.deb sudo dpkg -i docker-ce*.deb sudo dpkg -i docker-buildx-plugin*.deb

3.4 验证安装结果

检查服务状态和版本:

sudo systemctl start docker sudo docker version

正常输出应包含:

Client: Docker Engine - Community Version: 24.0.2 API version: 1.43 Go version: go1.20.4 Server: Docker Engine - Community Engine: Version: 24.0.2 API version: 1.43 (minimum version 1.12)

4. 常见问题与解决方案

4.1 依赖关系错误处理

如果遇到类似错误:

dpkg: dependency problems prevent configuration of docker-ce: docker-ce depends on libseccomp2 (>= 2.3.0); however: Version of libseccomp2 on system is 2.4.1-0ubuntu0.20.04.2.

解决方法:

sudo apt-get install -f

4.2 服务启动失败排查

如果systemctl start docker失败,检查日志:

journalctl -xe -u docker

常见原因及解决:

  1. cgroup驱动不匹配:

    sudo mkdir -p /etc/docker echo '{"exec-opts": ["native.cgroupdriver=systemd"]}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker
  2. 存储驱动问题:

    sudo rm -rf /var/lib/docker sudo systemctl restart docker

4.3 离线环境使用Docker

离线环境下需要提前准备镜像:

# 在有网络的机器上拉取镜像并导出 docker pull ubuntu:20.04 docker save -o ubuntu20.tar ubuntu:20.04 # 在离线环境导入 docker load -i ubuntu20.tar

5. 高级配置与优化

5.1 离线镜像仓库搭建

对于长期离线环境,建议搭建私有镜像仓库:

docker pull registry:2 docker run -d -p 5000:5000 --restart=always --name registry registry:2

5.2 磁盘空间管理

离线环境尤其需要注意磁盘空间:

# 设置Docker数据目录大小限制 sudo mkdir -p /etc/docker echo '{"data-root": "/data/docker", "storage-driver": "overlay2"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker

5.3 安全加固措施

离线环境的安全配置:

# 禁用远程API访问 echo '{"hosts": ["unix:///var/run/docker.sock"]}' | sudo tee /etc/docker/daemon.json # 启用用户命名空间隔离 sudo echo "dockremap:165536:65536" >> /etc/subuid sudo echo "dockremap:165536:65536" >> /etc/subgid

6. 批量部署方案

对于需要批量安装的场景,可以编写自动化脚本:

#!/bin/bash # offline-docker-install.sh DOCKER_DIR="/tmp/docker-offline" install_pkg() { sudo dpkg -i $DOCKER_DIR/containerd.io*.deb sudo dpkg -i $DOCKER_DIR/docker-ce-cli*.deb sudo dpkg -i $DOCKER_DIR/docker-ce*.deb sudo apt-get install -f -y } setup_daemon() { sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF } start_services() { sudo systemctl enable --now docker sudo usermod -aG docker $USER } main() { install_pkg setup_daemon start_services docker version } main

使用方式:

chmod +x offline-docker-install.sh sudo ./offline-docker-install.sh

7. 版本管理与升级策略

7.1 版本锁定方法

为防止意外升级,可以固定Docker版本:

sudo apt-mark hold docker-ce docker-ce-cli containerd.io

7.2 离线升级流程

当需要升级时:

  1. 在有网络环境下载新版本deb包
  2. 按照相同步骤传输到目标服务器
  3. 执行:
    sudo apt-mark unhold docker-ce docker-ce-cli containerd.io sudo dpkg -i *.deb sudo apt-mark hold docker-ce docker-ce-cli containerd.io

8. 生产环境最佳实践

经过多个金融项目的验证,我总结出以下经验:

  1. 版本一致性:所有生产节点必须使用完全相同的Docker版本
  2. 镜像预加载:部署前将所需基础镜像全部导入
  3. 日志轮转:配置合理的日志策略防止磁盘爆满
    sudo tee /etc/docker/daemon.json <<-'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "50m", "max-file": "3" } } EOF
  4. 资源限制:为容器设置合理的CPU和内存限制
  5. 备份策略:定期备份/var/lib/docker目录

9. 性能调优技巧

针对x86_64架构的特别优化:

# 启用性能模式 sudo cpupower frequency-set -g performance # 优化内核参数 sudo tee /etc/sysctl.d/docker.conf <<-'EOF' net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 vm.swappiness=10 vm.overcommit_memory=1 EOF sudo sysctl -p /etc/sysctl.d/docker.conf

10. 监控与维护

离线环境更需要完善的监控:

# 简易监控脚本 while true; do docker stats --no-stream df -h /var/lib/docker sleep 5 done

对于长期运行的离线环境,建议:

  1. 每周检查一次磁盘使用情况
  2. 每月清理一次无用镜像和容器
    docker system prune -f
  3. 每季度验证一次备份可恢复性

我在实际部署中发现,采用这套方案后,即使在完全离线的环境中,Docker的稳定性和性能都能满足生产级需求。特别是在金融行业的合规检查中,这种可控的安装方式更容易通过安全审计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 19:07:55

基于BiLSTM-Transformer的低温电动汽车续航里程预测

简介&#xff1a;面向汽车低温环境下续航里程与充电时间预测问题&#xff0c;这套基于BiLSTM-Transformer混合模型的Python源码包提供了完整的深度学习设计与实现方案。项目共35个文件&#xff0c;压缩后约24MB&#xff0c;包含15个Python源文件&#xff0c;覆盖数据读取、特征…

作者头像 李华
网站建设 2026/10/26 19:06:35

多频段压缩器实现:频段拆分、检测器与JUCE实时处理避坑指南

简介&#xff1a;这份资源面向具备一定C基础、希望深入音频插件开发的开发者与音乐技术爱好者&#xff0c;围绕多频段动态范围压缩器的实现展开。内容以JUCE框架为核心&#xff0c;讲解频段划分、动态范围检测、压缩算法设计、增益补偿与信号合成等关键环节&#xff0c;并给出插…

作者头像 李华
网站建设 2026/10/26 19:06:28

WebSocket与Disruptor实现毫秒级协同编辑

1. 项目概述&#xff1a;WebSocket协同编辑的核心挑战 在实时协同编辑领域&#xff0c;如何实现毫秒级的多用户操作同步一直是个技术难点。传统方案通常采用轮询或长连接&#xff0c;但这些方法要么存在延迟过高的问题&#xff0c;要么在用户量增大时服务端压力剧增。我们团队最…

作者头像 李华
网站建设 2026/10/26 19:06:28

Logit标准化:解决知识蒸馏中logit尺度失配的关键技术

1. 项目概述&#xff1a;什么是logit-standardization-KD&#xff1f;它解决的不是“要不要蒸馏”&#xff0c;而是“怎么蒸馏才不丢精度” logit-standardization-KD——这个标题乍看像一串密码&#xff0c;但拆开来看&#xff0c;它直指知识蒸馏&#xff08;Knowledge Distil…

作者头像 李华
网站建设 2026/10/26 19:05:43

RecyclerView性能优化全解析:从原理到实战

1. RecyclerView深度优化实战指南在Android开发领域&#xff0c;RecyclerView作为列表展示的核心组件&#xff0c;其性能表现直接影响着应用流畅度。我经历过一个电商项目&#xff0c;当商品列表超过500项时&#xff0c;快速滑动会出现明显的卡顿现象。通过系统性的优化手段&am…

作者头像 李华
网站建设 2026/10/26 19:05:21

天聚地合天气API开发实战与优化指南

1. 天聚地合天气接口开发实战指南 最近在开发一款生活服务类App时&#xff0c;我选择了天聚地合的天气数据接口。这个决定并非偶然——在对比了市面上多个天气API后&#xff0c;我发现天聚地合在数据准确性、响应速度和价格方面都很有竞争力。如果你正在考虑为你的App集成天气功…

作者头像 李华