一: 问题:

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

查看我使用docker容器启动服务的端口 正在监听

docker images 找不到对应的镜像

docker ps -a 找不到任何容器

二: 排查过程:

1.检查docker服务状态

systemctl status docker

看到docker运行正常

  1. 检查 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却找不到容器,也找不到镜像的更多相关文章

  1. Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅

    通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个 ...

  2. 还不懂Docker?一个故事安排的明明白白!

    程序员受苦久矣 多年前的一个夜晚,风雨大作,一个名叫Docker的年轻人来到Linux帝国拜见帝国的长老. "Linux长老,天下程序员苦于应用部署久矣,我要改变这一现状,希望长老你能帮帮我 ...

  3. Docker 运行一个Web应用

    使用 docker 构建一个 web 应用程序. 我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用 参数说明: -d:让容器在后台运行. -P:将容器内部使用的网 ...

  4. Docker 环境 Nacos2 MySQL8

    本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据. 1 拉取镜像 1.1 创建目录 在硬盘上创建 nacos 的有关目录: mkdir ...

  5. Docker:一个装应用的容器

    一:简介:你是否经历过“我本地运行没问题啊!““哪个哥们有写死循环了““完了,服务器撑不住了“等等问题,docker就是这么帮你解决问题的工具,它可以帮你把web应用自动化打包和发布,在服务型环境下进 ...

  6. 关于容器、虚拟机以及 Docker 的一个入门教程

    Yves yao · 2017-09-05翻译 · 1315阅读 原文链接 huangxiaolu审校   源地址:http://zcfy.cc/article/a-beginner-friendly ...

  7. Docker - 查看容器进程在宿主机的 PID

    概述 查看 docker 进程, 在容器外的 pid 背景 docker 中运行的进程, 本质上是运行在 host 上的 这些进程, 在 host 上, 也可以有自己的 pid 如果某种情况下, 连不 ...

  8. Swoft 新手向教程 - 通过 Docker 搭建一个开发环境

    本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...

  9. 如何通过Docker搭建一个swoft开发环境

    本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...

  10. paas架构之docker——容器进程管理

    1.docker进程管理 docker的进程管理命令ps的用法基本和ubuntu系统的用法一致 1.1. 查看docker进程 sudo docker ps –a 1.2. 附着到容器上 Sudo d ...

随机推荐

  1. 学习高校课程-软件设计模式-软件设计原则(lec2)

    Feature of Good Design (1) 优秀设计的特点(一) Code reuse 代码复用 – Challenge: tight coupling between components ...

  2. Angular Material 18+ 高级教程 – 大杂烩

    前言 本篇记入一些 Angular Material 的小东西. Override Material Icon Button Size 参考:Stack Overflow – Change size ...

  3. Identity – HTTP Authentication

    前言 HTTP Authentication 是很古老的东西. 已经很少地方会用到了. 但还是给我遇上了. 在做 Google Ads Offline Conversion 时, 它提供了 2 种方式 ...

  4. DOM & BOM – 大杂烩

    Document.scrollingElement 参考: why to use 'html, body' for scrollTop instead of just 'html' MDN 使用doc ...

  5. Figma 学习笔记 – 黑科技

    Figma 其实有蛮多黑科技的, 因为需求真的太多了, 在还没有实现的期间就诞生了很多 hacking 的 way. Feature Issue 实现 min-height 通过 0px 黑科技 其实 ...

  6. Go runtime 调度器精讲(六):非 main goroutine 运行

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 在 Go runtime 调度器精讲(三):main goroutine 创建 介绍了 main goroutine 的创建,文中我们说 mai ...

  7. HTML——基础标签

    基础标签    图片.音频.视频标签    src:资源路径 1.绝对路径 2.相对路径 ./ 表示本级目录 (可以省略) ../ 表示上级目录 超链接标签       列表标签    表格标签    ...

  8. uniapp电子签名盖章实现详解

    项目开发中用到了电子签名.签好名的图片需要手动实现横竖屏旋转.并将绘制的签名图片放到pdf转换后的base64的图片上,可以手动拖动签名到合适的位置,最后合成签名和合同图片并导出.和以往一样,先发一下 ...

  9. 深入探索Spring AI:源码分析流式回答

    在上一章节中,我们深入分析了Spring AI的阻塞式请求与响应机制,并探讨了如何增强其记忆能力.今天,我们将重点讲解流式响应的概念与实现.毕竟,AI的流式回答功能与其交互体验密切相关,是提升用户满意 ...

  10. Oracle 11.2.0.4 Data Guard 部署练习【一主一备/单机】

    Oracle DG 理论及实验笔记 DATAGUARD 是通过建立一个 PRIMARY 和 STANDBY 组来确立其参照关系. STANDBY 一旦创建, DATAGUARD 就会通过将主数据库 ( ...