使用于内网环境与外网格局不能通过管理器去镜像站直接下载包的情况

文章目录

  • 一、 环境清理(新环境不用参考这个)
  • 二、安装
  • 三、可能出现的问题以及解决方案
    • 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 服务依旧在不断尝试重启

  1. 检查 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

然后你再去导入一个最简单镜像,看是否能还原成容器并跑起来,如果能恭喜你你解决了,可以摸鱼了,最后希望能够帮助到你,不喜勿喷,总有些学龄前的稚子啥都不看,就开始犬吠,不懂或是有错误欢迎交流。


在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐