Linux离线(zip方式)安装docker

目录

基础信息

操作系统信息

OS版本:CentOS 7 64位

内核版本:3.10.0

相关命令:

  • uname -r
  • cat /etc/os-release

docker信息

版本:28.1.1

安装方式:zip包离线安装

下载地址:https://download.docker.com/linux/static/stable/x86_64/

额外配置:修改默认工作路径

安装实例

安装步骤

  1. 下载安装包
  2. 解压
  3. 创建相关路径
  4. 添加环境变量
  5. 启动

示例

  1. 把下载的安装上传到自己的路径
  2. 解压
bash 复制代码
cd 安装包所在位置
tar -xvf ./docker-28.1.1.tgz
  1. 创建相关路径
    这一步是因为要修改docker的默认工作路径才需要,如果不修改可以跳过这一步。这里主要有两个需要创建的路径,一个是修改默认工作路径的文件,一个是默认工作路径,我们把修改的配置文件放在:/etc/docker/daemon.json,工作路径配置为:/mnt/data/dockerexec,可以选择右键方式也可以选择命令方式。
bash 复制代码
sudo mkdir -p /etc/docker
cd /etc/docker
sudo echo '{"data-root": "/mnt/data/dockerexec"}' > /etc/docker/daemon.json
  1. 在/etc/profile中添加以下内容,zip方式如果不配置这个会出现问题1。其中/home/soft/docker需要改成自己的docker安装路径
bash 复制代码
export PATH=$PATH:/home/soft/docker
  1. 启动
    1) 使用自带dockerd 启动
bash 复制代码
nohup dockerd &

2)可以添加docker.service,通过systemctl命令启动

文件位置:/etc/systemd/system/docker.service

文件内容:

bash 复制代码
[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=/home/soft/docker/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

遇到的问题

问题1:修改默认工作路径启动失败

报错信息

bash 复制代码
unable to configure the Docker daemon with file /etc/docker/daemon.json: merged configuration validation from file and command line flags failed: invalid userland-proxy-path: userland-proxy is enabled, but userland-proxy-path is not set

前置操作

新增daemon.json文件,配置内容{"data-root": "/mnt/data/dockerexec"}已经新建data/dockerexec路径,权限755

解决方法:通过临时禁用解决上面问题

bash 复制代码
{
  "data-root": "/mnt/data/dockerexec",
  "userland-proxy": false
}

问题:临时禁用有什么风险吗?如果不禁用应该怎么解决?

潜在风险:

  • 可能导致容器端口映射功能失效,影响容器与外部网络的通信
  • 可能导致 IPv6 环境下的容器无法被外部访问
  • 在低版本内核(如 2.6.x)中,容器内部通过 Hairpin 方式访问自己暴露的服务时,可能需要依赖 userland-proxy。如果禁用它,可能影响容器内部的网络通信
  • 在禁用 userland-proxy 时,容器可能无法接收 UDP 流量。这是因为 userland-proxy 在处理某些网络协议(如 UDP)时具有特定作用,禁用后可能导致相关流量无法正确到达容器。
    上面的问题都只是可能性,也就是说不一定会发生,但是在生产中一般不建议这么做。

问题2 找不到对应组

临时禁用解决问题1,启动之后发现新问题:

bash 复制代码
time="2025-06-03T10:17:47.982346236+08:00" level=info msg="Starting up"
time="2025-06-03T10:17:47.983972390+08:00" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
time="2025-06-03T10:17:47.984112724+08:00" level=info msg="containerd not running, starting managed containerd"
failed to start containerd: exec: "containerd": executable file not found in $PATH

原因:未添加docker到path中,类似于Windows下的环境变量中的path,没有配置时会提示找不到路径

解决方法:把docker路径添加到path中

  • 一次性添加
bash 复制代码
export PATH=$PATH:/home/soft/docker
  • 持久化
    文件:/etc/profile
    添加内容:
bash 复制代码
export PATH=$PATH:/home/soft/docker

添加路径之后第一个问题也解决了,所以可以去掉临时禁用的配置,优先使用默认配置。

相关推荐
dualven_in_csdn1 小时前
搞了两天的win7批处理脚本问题
java·linux·前端
被瞧不起的神2 小时前
Docker 安装教程(CentOS 系统)纯新手可入门
docker·容器·centos
晨曦backend2 小时前
Vim 匹配跳转与搜索命令完整学习笔记
linux·编辑器·vim
Thinbug3 小时前
群晖Nas - Docker(ContainerManager)上安装GitLab
docker·容器·gitlab
爬呀爬的水滴4 小时前
解决Ubuntu24.04版本,右键没有共享选项的问题
linux·服务器·ubuntu·samba·共享文件夹
IT coke4 小时前
centos7部署AWStats日志分析系统
linux·运维·centos
雾岛心情5 小时前
【黑客与安全】Linux的常用命令之系统架构信息获取系列命令
linux·运维·服务器
杯莫停丶5 小时前
Linux基础指令大全
linux·运维·chrome
程序员阿超的博客5 小时前
云原生核心技术 (2/12): Docker 入门指南——什么是容器?为什么它比虚拟机更香?
docker·云原生·容器