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

简介: 本文详细介绍在Ubuntu 24等Linux系统中离线安装Docker的完整流程,适用于内网隔离环境。涵盖安装包下载、`docker.service`配置、安装与卸载脚本编写、权限设置、镜像测试及用户组配置,并包含docker-compose的离线部署方法,助力高效完成生产环境搭建。

在企业生产环境中,服务器往往处于内网隔离状态,无法直接访问互联网。这种环境下,离线安装Docker成为了一项必备技能。我最近有在ubuntu24上离线部署,正好坐下记录。本文将详细介绍Linux系统下离线安装Docker的完整流程,涵盖准备工作、安装步骤、常见问题及优化配置。

v2-a62710d971c47422f25eca254b2add8a_1440w.png

离线安装Docker

下载安装包

离线安装包下载地址:https://download.docker.com/linux/static/stable/
_20251204_125757.png
ScreenShot_2025-12-04_141350_297.png
我此处下载的是 x86_64/docker-28.4.0.tgz

准备安装文件

  • 创建 docker.service

我们将下载后的文件放到我们的服务器上,在安装包同级目录下创建docker.service 文件,内容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

此文件有些旧版本不兼容

  • 创建安装脚本

在安装包同级目录下创建instll.sh 脚本文件,内容如下:

#!/bin/sh
echo '解压tar包......'
tar -xvf $1 --overwrite
echo '将docker目录移到/usr/bin目录下.....'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录.....'
cp docker.service /etc/systemd/system/
echo '添加文件权限.....'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件.....'
systemctl daemon-reload
echo '启动docker.....'
systemctl start docker
echo '设置开机自启.....'
systemctl enable docker.service
echo 'docker安装成功.....'
docker -v
  • 创建卸载脚本

在安装包同级目录下创建uninstall.sh 脚本文件,内容如下:

#!/bin/sh
echo '删除docker.service......'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件......'
# 删除 docker
sudo rm -rf /usr/bin/docker*
# 删除 containerd
sudo rm -rf /usr/bin/containerd*
# 删除 docker 运行时 ID
sudo rm -rf /var/run/docker*
# 卸载 docker-compose
sudo rm -rf /usr/local/bin/docker-compose
sudo rm -rf /var/lib/docker*
sudo rm -rf /var/lib/containerd*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'

创建完之后给脚本赋权限

chmod +x  install.sh uninstall.sh

安装

执行部署脚本install.sh,使用root权限执行

sudo ./install.sh  docker-28.4.0.tgz

出现如下信息则代表成功

_20251204_131322.png

如果不想用脚本安装的家人们可以挨条执行脚本中的命令进行安装

测试

我们可以从别的服务器上copy一个镜像tar文件过来,使用以下命令将镜像保存未tar文件

docker save -o nginx.tar nginx:1.21.5

执行完之后会有一个nginx.tar文件,将此文件拷贝到我们刚刚安装了docker的服务器上,使用以下命令加载镜像

sudo docker load -i nginx.tar

加载完之后我们就可以使用以下名称查看到镜像了

sudo docker images

使用以下命令启动容器服务

sudo docker run -p 80:80 nginx:1.21.5

启动之后我们就可以在浏览器中查看服务了。

到此,如果没有问题的话说明我们离线安装docker成功了

配置Docker用户组

Docker 利用 Linux 的用户和组权限来管理对 Docker 守护进程的访问权限。一般情况下,只有 root 用户和属于 docker 用户组的用户才被允许访问 Docker 守护进程。在 Linux 系统上使用 Docker 时,如果您尚未配置 docker 用户组,那么作为非 root 用户执行 Docker 相关命令将要求使用 sudo 来提升权限。

默认情况下,Docker 在安装过程中会创建一个名为 docker 的用户组,用于管理 Docker 容器。

  • 您可以使用以下命令来查看是否存在 docker 用户组:
getent group docker
  • 如果不存在,则使用以下命令创建docker用户组
sudo groupadd docker
  • 将用户添加到 Docker 用户组
sudo usermod -aG docker your_username

或者

sudo gpasswd -a your_username docker
  • 为了使更改生效,使用以下命令更新用户组。
newgrp docker

docker-compose安装

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

从github上下载docker-compose二进制文件安装

  • 下载最新版的docker-compose文件

官方文档地址:https://docs.docker.com/compose/install/

下载地址:https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

  • 添加可执行权限
cd /usr/local/bin/
mv docker-compose-linux-x86_64 docker-compose
sudo chmod +x docker-compose
  • 测试安装结果
docker-compose --version
Docker Compose version v2.5.0

结语

离线安装Docker虽然比在线安装复杂,但掌握了正确的方法和工具后,可以大大提高在内网环境部署的效率。关键是要做好前期规划,确保所有依赖包的完整性,并建立完善的镜像管理机制。实践是最好的老师。建议先在测试环境多次演练,熟练掌握后再在生产环境部署。

目录
相关文章
|
缓存
银河麒麟server-V10配置镜像源
银河麒麟server-V10配置镜像源
18205 1
|
26天前
|
Ubuntu 安全 Java
Docker 拉取部署 OpenJDK 全指南:替代方案、实操步骤与最佳实践
本文详解Docker部署OpenJDK全流程:搭建环境、选择eclipse-temurin等替代镜像,避开已弃用的官方镜像,通过Dockerfile构建应用,配置JVM参数与容器资源限制,并提供最佳实践与问题排查方案,助力企业级Java应用高效、安全运行。
567 1
|
2月前
|
存储 Ubuntu 数据安全/隐私保护
Ubuntu 24.04 安装 Docker
本文详细介绍在 VMware 中的 Ubuntu 24.04 服务器上安装 Docker 的完整流程,包括环境准备、配置阿里云镜像源、添加国内加速器及用户权限配置,确保高效、安全地部署并使用 Docker。
2323 3
Ubuntu 24.04 安装 Docker
|
4月前
|
人工智能 Ubuntu 数据可视化
【详细教程】如何在Ubuntu上本地部署Dify?
Dify 是一个开源的大语言模型应用开发平台,支持低代码/无代码开发,提供多模型接入、Agent框架、RAG检索增强生成等功能,助力快速构建AI应用。支持本地部署,提供详尽文档与可视化界面,适用于聊天助手、文本生成、自动化任务等多种场景。
4004 124
|
3月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
1571 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
Ubuntu Linux 网络安全
Docker&Docker Compose安装(离线+在线)
Docker&Docker Compose安装(离线+在线)
20312 1
|
8月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3032 57
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】