docker环境一个奇怪的问题,容器进程正常运行,但是docker ps -a却找不到容器,也找不到镜像
一: 问题:
docker环境一个奇怪的问题,使用容器跑的进程正常提供服务,在服务器上也能看到对应的端口正在监听,但是docker ps -a却找不到容器,也找不到镜像.
查看我使用docker容器启动服务的端口 正在监听

docker images 找不到对应的镜像

docker ps -a 找不到任何容器

二: 排查过程:
1.检查docker服务状态
systemctl status docker
看到docker运行正常

- 检查 Docker 数据根目录
docker info | grep "Docker Root Dir"

这目录居然是 /var/snap/docker/common/var-lib-docker
在默认情况下,Docker 的数据目录是 /var/lib/docker,但这里却是 Snap 版本 的 Docker,Snap 包的文件系统布局与传统方式不同,因此数据目录被改为 /var/snap/docker/common/var-lib-docker。
这也是为什么我在执行 docker info 时,输出的 Docker Root Dir 是这个路径,而不是默认的 /var/lib/docker。所以需要针对这个路径来检查。
我的docker是使用APT安装的数据目录在/var/lib/docker下 运行一段时间后会莫名跑到/var/snap/docker/ 下,需要重新安装docker才能恢复, 这是Snap 版本的 Docker 和 传统版本的 Docker 共存互相干扰导致的,由于两者的服务名称和运行方式不同,它们可能会在重启或升级后冲突,甚至切换默认的守护进程。
三: 解决方案
要从根本上解决这个问题,需要明确选择 只保留一种 Docker 安装方式。以下是详细步骤:
步骤 1: 检查当前的 Docker 安装方式
运行以下命令确认系统中是否同时存在 Snap 和传统版本的 Docker:
snap list | grep docker
which docker


如果 snap list 显示 Docker,则 Snap 版本存在。如果 which docker 显示路径是 /usr/bin/docker,则是传统版本。
如果两者都存在,需要卸载其中一个,这里我们卸载掉snap版本。
sudo snap remove docker

卸载后 重新启动docker发现无法运行,提示 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

重新安装传统docker
sudo apt-get remove --purge docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
安装不成功,提示E: Sub-process /usr/bin/dpkg returned an error code (1

检查 docker.service 的依赖关系发现docker.socket 是红色的,这表示 docker.socket 服务未运行或未正确配置
sudo systemctl list-dependencies docker.service

尝试很多方法无果,决定强制重装 docker.socket
sudo apt-get remove --purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/run/docker.sock
更新并重新安装:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装成功

再看下我的镜像和容器,都在!


ok了
docker环境一个奇怪的问题,容器进程正常运行,但是docker ps -a却找不到容器,也找不到镜像的更多相关文章
- Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅
通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个 ...
- 还不懂Docker?一个故事安排的明明白白!
程序员受苦久矣 多年前的一个夜晚,风雨大作,一个名叫Docker的年轻人来到Linux帝国拜见帝国的长老. "Linux长老,天下程序员苦于应用部署久矣,我要改变这一现状,希望长老你能帮帮我 ...
- Docker 运行一个Web应用
使用 docker 构建一个 web 应用程序. 我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用 参数说明: -d:让容器在后台运行. -P:将容器内部使用的网 ...
- Docker 环境 Nacos2 MySQL8
本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据. 1 拉取镜像 1.1 创建目录 在硬盘上创建 nacos 的有关目录: mkdir ...
- Docker:一个装应用的容器
一:简介:你是否经历过“我本地运行没问题啊!““哪个哥们有写死循环了““完了,服务器撑不住了“等等问题,docker就是这么帮你解决问题的工具,它可以帮你把web应用自动化打包和发布,在服务型环境下进 ...
- 关于容器、虚拟机以及 Docker 的一个入门教程
Yves yao · 2017-09-05翻译 · 1315阅读 原文链接 huangxiaolu审校 源地址:http://zcfy.cc/article/a-beginner-friendly ...
- Docker - 查看容器进程在宿主机的 PID
概述 查看 docker 进程, 在容器外的 pid 背景 docker 中运行的进程, 本质上是运行在 host 上的 这些进程, 在 host 上, 也可以有自己的 pid 如果某种情况下, 连不 ...
- Swoft 新手向教程 - 通过 Docker 搭建一个开发环境
本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...
- 如何通过Docker搭建一个swoft开发环境
本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...
- paas架构之docker——容器进程管理
1.docker进程管理 docker的进程管理命令ps的用法基本和ubuntu系统的用法一致 1.1. 查看docker进程 sudo docker ps –a 1.2. 附着到容器上 Sudo d ...
随机推荐
- 『读书笔记』你不知道的JavaScript(上)
前言 文章只记录理解以及容易遗忘的知识点. 词法作用域.块作用域 词法作用域 词法作用域:简单的说,词法作用域就是定义在词法阶段的作用域.换句话说,词法作用域就是在你写代码时将变量和块作用域写在哪里来 ...
- ST-SSL: 用于交通流量预测的时空自监督学习《Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction》(交通流量预测、时空异质性、自监督、数据增强)
2023年10月23日,继续论文,好困,想发疯. 论文:Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction Git ...
- 项目完成小结:使用DjangoStarter v3和Taro开发的微信小程序
前言 不知不觉已经九月了,又到了一年的开学季,我每年都想做的项目墙甚至连个影子都没有- 最近生活中的琐事太多了,导致完全没有想写文章的动力,不过再怎么拖还是得记录,随便写写吧~ 这次是7月份的一个小项 ...
- Azure – DNS
前言 以往 DNS 都是用 Domain 公司免费提供的. 但这类 DNS 一般都不支持 API 访问. 这就会导致无法自动 renew Let's Encrypt wildcard SSL. 所以用 ...
- [30] CSP 加赛 1
A.小W与伙伴招募 考虑贪心,可以发现,每一天只需要优先选择价值低的即可 这种贪心思路有一个错误的扩展,就是先把 \(m\) 天的货一次性补齐再一次性买,这样做的问题在于有可能买到次日的货,而这样做是 ...
- 2.2.2 PyTorch 2.0 GPU NVIDIA运行库的安装 ——CUDA+cuDNN安装教程
参考文章: https://blog.csdn.net/mbdong/article/details/121769951 CUDA download: https://developer.nvidia ...
- crypt.h:No such file or directory 报错处理
crypt.h:No such file or directory 报错处理 前言:本文初编辑于2024年9月28日 CSDN主页:https://blog.csdn.net/rvdgdsva 博客园 ...
- `std::future`--异步的优势
std::future 相比于直接使用线程在 C++ 中有几个重要的优势,主要体现在同步结果获取.简化代码管理.以及更安全的异步任务管理等方面.以下是 std::future 的一些主要优势: 1. ...
- USB Type-C Power Role
USB Power Role 是指 USB 设备在供电方面所扮演的角色,主要分为供电方(Provider)和受电方(Consumer).在 USB 供电协议中,电源角色的管理尤为重要,尤其是在 USB ...
- git 设置代理和取消代理
1.设置代理 git config --global http.proxy "127.0.0.1:1080" 2.取消代理 git config --global --unset ...