因为服务器无法直连外网,有时候docker必须进行离线安装,本次文章记录的是我离线安装过程的操作步骤,仅供参考,不同的环境命令可能会有差异。
一、环境检查
- 内核
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上;
使用命令uname -r查看CentOS内核;
[root@LHLNXNS10 system]# uname -r 3.10.0-1160.el7.x86_64
- CentOS版本信息
通过命令cat /etc/redhat-release可以查看版本信息
[root@LHLNXNS10 system]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
二、下载安装包
- 资源下载路径:下载资源包
- 在这里我选在下载的版本是:docker-24.0.7.tgz
- 最新版本:docker-29.3.1.tgz
- 发布时间:2026-03-25 17:10:08
- 下载地址:https://download.docker.com/linux/static/stable/x86_64/docker-29.3.1.tgz
三、卸载旧版本(如果有的话)
1.查找主机上关于Docker的软件包
rpm -qa | grep docker #列出包含docker字段的软件的信息

2.使用yum remove卸载软件
yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64 yum remove docker-client-1.13.1-53.git774336d.el7.centos.x86_64 yum remove docker-common-1.13.1-53.git774336d.el7.centos.x86_64
再使用docker命令会提示docker不存在

四、开始安装
4.1 解压到指定目录
# 解压上传好的安装包 tar -zxvf ./docker-24.0.7.tgz #【已弃用】复制所有的docker文件到bin目录 # cp docker/* /usr/bin/ # 将解压得到的文件夹docker移动到目录/data/server/下 mv ./docker /data/server # 创建软链接(也方便后续升级,直接更新软链接即可) ln -sf /data/server/docker/docker* /usr/local/bin/ ln -sf /data/server/docker/containerd /usr/local/bin/ ln -sf /data/server/docker/containerd-shim-runc-v2 /usr/local/bin/ ln -sf /data/server/docker/ctr /usr/local/bin/ ln -sf /data/server/docker/runc /usr/local/bin/
4.2 注册系统服务
在 /etc/systemd/system 目录下创建一个docker.service文件,用于注册docker服务和开机启动
使用命令vim /etc/systemd/system/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 ExecStart=/usr/local/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
设置docker服务权限
#设置文件权限 chmod 777 /etc/systemd/system/docker.service #重新加载配置 systemctl daemon-reload #设置docker为开机启动 systemctl enable docker.service #启动docker命令 systemctl start docker
查看容器状态:systemctl status docker
[root@LHLNXNS10 system]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2022-06-27 11:54:47 CST; 2h 13min ago
Docs: https://docs.docker.com
Main PID: 31137 (dockerd)
Tasks: 51
Memory: 25.2M
CGroup: /system.slice/docker.service
├─31137 /usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
└─31167 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Jun 27 11:54:45 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:45.609986010+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
Jun 27 11:54:45 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:45.610023072+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Jun 27 11:54:45 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:45.741669951+08:00" level=info msg="Loading containers: start."
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.260541389+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.435080759+08:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.596933690+08:00" level=info msg="Loading containers: done."
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.633966421+08:00" level=info msg="Docker daemon" commit=79ea9d3 graphdriver(s)=overlay2 version=20.10.9
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.634328720+08:00" level=info msg="Daemon has completed initialization"
Jun 27 11:54:47 LHLNXNS10 systemd[1]: Started Docker Application Container Engine.
Jun 27 11:54:47 LHLNXNS10 dockerd[31137]: time="2022-06-27T11:54:47.686162748+08:00" level=info msg="API listen on /var/run/docker.sock"
到这里,我们的docker离线安装已经完工。
4.3 检测安装效果
可以使用docker -v命令查看安装的版本是否对得上。
# docker -v Docker version 24.0.7, build ed223bc
离线安装 docker-compose
1.下载安装包
官方下载地址:https://github.com/docker/compose/releases
根据实际部署系统版本选择,例如:docker-compose-linux-x86_64,这里下载下来就是一个可执行文件。
2. 将下载文件移动到docker命令所在目录下
# 移动并重命名为docker-compose mv ./docker-compose-linux-x86_64 /data/server/docker/docker-compose # 生成系统命令软链接 ln -sf /data/server/docker/docker-compose /usr/local/bin/
3. 赋予执行权限
chmod +x /usr/local/bin/docker-compose
4. 验证安装结果
docker-compose -v