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 ...
随机推荐
- 学习高校课程-软件设计模式-软件设计原则(lec2)
Feature of Good Design (1) 优秀设计的特点(一) Code reuse 代码复用 – Challenge: tight coupling between components ...
- Angular Material 18+ 高级教程 – 大杂烩
前言 本篇记入一些 Angular Material 的小东西. Override Material Icon Button Size 参考:Stack Overflow – Change size ...
- Identity – HTTP Authentication
前言 HTTP Authentication 是很古老的东西. 已经很少地方会用到了. 但还是给我遇上了. 在做 Google Ads Offline Conversion 时, 它提供了 2 种方式 ...
- DOM & BOM – 大杂烩
Document.scrollingElement 参考: why to use 'html, body' for scrollTop instead of just 'html' MDN 使用doc ...
- Figma 学习笔记 – 黑科技
Figma 其实有蛮多黑科技的, 因为需求真的太多了, 在还没有实现的期间就诞生了很多 hacking 的 way. Feature Issue 实现 min-height 通过 0px 黑科技 其实 ...
- Go runtime 调度器精讲(六):非 main goroutine 运行
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 在 Go runtime 调度器精讲(三):main goroutine 创建 介绍了 main goroutine 的创建,文中我们说 mai ...
- HTML——基础标签
基础标签 图片.音频.视频标签 src:资源路径 1.绝对路径 2.相对路径 ./ 表示本级目录 (可以省略) ../ 表示上级目录 超链接标签 列表标签 表格标签 ...
- uniapp电子签名盖章实现详解
项目开发中用到了电子签名.签好名的图片需要手动实现横竖屏旋转.并将绘制的签名图片放到pdf转换后的base64的图片上,可以手动拖动签名到合适的位置,最后合成签名和合同图片并导出.和以往一样,先发一下 ...
- 深入探索Spring AI:源码分析流式回答
在上一章节中,我们深入分析了Spring AI的阻塞式请求与响应机制,并探讨了如何增强其记忆能力.今天,我们将重点讲解流式响应的概念与实现.毕竟,AI的流式回答功能与其交互体验密切相关,是提升用户满意 ...
- Oracle 11.2.0.4 Data Guard 部署练习【一主一备/单机】
Oracle DG 理论及实验笔记 DATAGUARD 是通过建立一个 PRIMARY 和 STANDBY 组来确立其参照关系. STANDBY 一旦创建, DATAGUARD 就会通过将主数据库 ( ...