关于离线环境非ROOT用户部署docker(适用于离线环境)
本文介绍了在内网环境下无法通过包管理器直接下载Docker时,如何实现离线安装Docker。主要内容包括:1)清理原有错误环境,详细列出Ubuntu系统的清理命令;2)正确安装步骤,包括下载适合系统版本的三剑客包(containerd、docker-cli、docker-ce)及安装顺序;3)常见问题解决方案,特别是containerd服务路径错误导致的启动失败问题,提供定位和修改systemd配
使用于内网环境与外网格局不能通过管理器去镜像站直接下载包的情况
文章目录
- 一、 环境清理(新环境不用参考这个)
- 二、安装
- 三、可能出现的问题以及解决方案
-
- 1.启动容器报错
- 2.docker无响应日志中显示Docker 服务依旧在不断尝试重启
一、 环境清理(新环境不用参考这个)
笔者这里的环境是Ubtntu 24.04,,适用于centos等环境,已经应用多次,实践可行。
1.删除原有的错误部署环境。
如果以前有网用包管理器装的,用管理器卸载相关配置以及docker文件。
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
删除默认数据存放位置
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
移除软件源
sudo rm /etc/apt/sources.list.d/docker.list
移除秘钥
sudo rm /etc/apt/keyrings/docker.gpg
更新软件包列表
sudo apt-get update
还不放心的话通过全局检索加删除指令清理干净环境,胆子放大,炸了再说,反正都有快照备份还原的。
sudo find / -name "docker"以及sudo find / -name "containerd"
sudo rm -rvf
2.原有错误环境是自己上传离线包的参考我这个
sudo dpkg -r docker-ce docker-ce-cli containerd.io
sudo apt-get purge docker-ce docker-ce-cli containerd.io
删除默认数据存放位置(这步也需要的)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
如果你是自定义安装参考我删除思路到对应地方删除,后续我将更新在线版速下docker。
二、安装
查看自己系统版本
cat /etc/os-release
确定版本后去这里docker地方下三个包,下面这个是Ubtntu 24.04的x86_64的直达路径。
https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/
ubuntu表示系统;noble表示系统的代号不懂你的系统代号可以百度下,stable表示官方稳定版本,amd64表示x86_64;你可以根据你的需要前往符合你的下载目录,请严格按照版本下文件,否则会出现兼容性问题,这种问题很难首先被排查到,会浪费大量时间!
哪三个包呢,这是基本docker能跑起来的必备三剑客,
如图哦,你怕版本选错可以根据包上传时间选择同一天的三包。
然后利用sftp工具上传文件到你的服务,下面就是老三样了通过dpkg安装。
安装依赖,docker-ce需要iptables
sudo apt install iptables
确保防火墙存在的需要用他划分docker,否则后续会报错
sudo dpkg -i 你上传的包的名字
注意三个包要按顺序解压,先是containerd然后是docker_cli最后是docker_ce;确保解压过程无报错;全部完成后
你输入docker --version将会显示对应的docker版本,很多人到这里都说好了但并不是的哦,后续还有可能跑不起来容器。如果你能使用能跑起来镜像你不用往下看了,如果你跑不起来接着看下文,看看笔者踩过的坑能不能帮你趟过河。
三、可能出现的问题以及解决方案
1.启动容器报错
failed to start docker-proxy, check that the current version is in your $PATH
解决方案参考第一清理环境,之前肯定有错误的docker配置影响了,请确保清理干净。
2.docker无响应日志中显示Docker 服务依旧在不断尝试重启
- 检查 containerd 服务状态
Docker 依赖于 containerd 来管理容器的生命周期,containerd 服务异常可能会导致 Docker 启动失败。你可以使用以下命令检查 containerd 服务的状态:
sudo systemctl status containerd
如果你的containerd是active那你另寻高明吧,你和笔者不是一个坑,如果不是,接着往下看,状态显示为
ExecStart=/usr/local/docker/containerd (code=exited, status=203/EXEC)
恭喜你你有救了,原因大多为指定的 /usr/local/docker/containerd 文件可能并不存在于系统中。
ls -l /usr/local/docker/containerd
看是否能输出路径,如果能,可能是权限不够,sudo chmod +x /usr/local/docker/containerd加权,如果不能,能极有可能是启动命令中路径不对接下来
1.通过which containerd查找他的安装位置,然后该命令会输出 containerd 可执行文件的实际路径。一般来说,它可能会是 /usr/bin/containerd 或者 /usr/sbin/containerd。
2. 修改 systemd 服务配置文件
由于当前 containerd 服务配置文件 /etc/systemd/system/containerd.service 中 ExecStart 指定的路径 /usr/local/docker/containerd 有误,需要将其修改为实际的安装路径。
编辑 containerd 服务配置文件:
sudo nano /etc/systemd/system/containerd.service
找到 ExecStart 行,将路径修改为上一步中 which containerd 命令输出的路径。例如,如果输出是 /usr/bin/containerd,则修改后的 ExecStart 行如下:
ExecStart=/usr/bin/containerd
修改完成后,按 Ctrl + X,然后按 Y 确认保存,最后按 Enter 退出 nano 编辑器。
3. 重新加载 systemd 配置并启动 containerd 服务重新加载 systemd 配置:
sudo systemctl daemon-reload
启动 containerd 服务:
sudo systemctl start containerd
检查 containerd 服务状态:
sudo systemctl status containerd
确保服务已成功启动,状态显示为 active (running)。
4. 设置 containerd 服务开机自启
sudo systemctl enable containerd
然后你再去导入一个最简单镜像,看是否能还原成容器并跑起来,如果能恭喜你你解决了,可以摸鱼了,最后希望能够帮助到你,不喜勿喷,总有些学龄前的稚子啥都不看,就开始犬吠,不懂或是有错误欢迎交流。

更多推荐

所有评论(0)