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

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

相关推荐
小白跃升坊18 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey18 小时前
【Linux】线程同步与互斥
linux·笔记
舰长11518 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀18 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng18 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.18 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon19 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq19 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
禅口魔心19 小时前
Win10 + WSL2 + Docker:K510(DongshanPI-Vision)开发环境从踩坑到跑通全记录(交叉编译 + 上板运行)
docker·嵌入式开发·wsl2·k510
Ankie Wan19 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc