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

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

v2-a62710d971c47422f25eca254b2add8a_1440w.png

离线安装Docker

下载安装包

离线安装包下载地址:download.docker.com/linux/stati... 我此处下载的是 x86_64/docker-28.4.0.tgz

准备安装文件

  • 创建 docker.service

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

ini 复制代码
[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 脚本文件,内容如下:

bash 复制代码
#!/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 脚本文件,内容如下:

bash 复制代码
#!/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 '卸载成功...'

创建完之后给脚本赋权限

bash 复制代码
chmod +x  install.sh uninstall.sh

安装

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

bash 复制代码
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的服务器上,使用以下命令加载镜像

css 复制代码
sudo docker load -i nginx.tar

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

复制代码
sudo docker images

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

arduino 复制代码
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 用户组:
csharp 复制代码
getent group docker
  • 如果不存在,则使用以下命令创建docker用户组

    sudo groupadd docker

  • 将用户添加到 Docker 用户组

    sudo usermod -aG docker your_username

或者

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

    newgrp docker

docker-compose安装

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

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

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

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

下载地址:github.com/docker/comp...

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

结语

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

本文使用 mdnice 排版

相关推荐
__beginner__2 小时前
docker安装influxdb
运维·docker·容器
todoitbo4 小时前
openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云
docker·云原生·容器·openeuler
weixin_46686 小时前
Docker常用命令与操作
运维·docker·容器
The star"'7 小时前
docker swarm和containerd
运维·docker·容器
❀͜͡傀儡师7 小时前
Docker部署OneTerm堡垒机
运维·docker·容器·oneterm
北珣.7 小时前
docker容器-命令
运维·docker·容器
❀͜͡傀儡师8 小时前
使用Docker部署DashDot服务器仪表盘和Drupal
服务器·docker·容器
峰顶听歌的鲸鱼8 小时前
13.docker部署
linux·运维·笔记·docker·容器·云计算
乌日尼乐8 小时前
【笔记】docker实用技巧与常见操作
docker