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

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

相关推荐
tryCbest11 分钟前
Linux系统下安装使用Redis
linux·运维·redis
AuroBreeze1 小时前
xv6-2023 - primes Lab
linux·运维·服务器
DIY机器人工房2 小时前
NAT 模式、命令行版、桥接模式方式给ubuntu虚拟机配网步骤:
linux·网络协议·ubuntu·嵌入式·桥接模式·diy机器人工房
wdfk_prog3 小时前
[Linux]学习笔记系列 -- lib/sort.c 通用的排序库(Generic Sorting Library) 为内核提供标准的、高效的排序功能
linux·运维·c语言·笔记·stm32·学习·bug
黑马金牌编程3 小时前
简易分析慢 SQL 的流程和方法
linux·数据库·mysql·性能优化·性能分析·慢日志
什么半岛铁盒3 小时前
C++项目:仿muduo库高并发服务器---------LoopThreadPool模块和TcpServer模块的实现
linux·服务器·c++·mysql·ubuntu
Lin_Aries_04214 小时前
容器化 Flask 应用程序
linux·后端·python·docker·容器·flask
鹏大师运维5 小时前
麒麟系统中修改 WPS 默认新建文件格式的方法
linux·操作系统·wps·docx·麒麟·word文档·excel文档
Lin_Aries_04216 小时前
通过配置 GitLab 自动触发项目自动化构建与部署
运维·docker·容器·自动化·云计算·gitlab
尘埃不入你眼眸6 小时前
Docker操作命令
运维·docker·容器