一: 问题:

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. ASP.NET Core – Static Files

    前言 记入一些冷门的知识. Custom content-type var fileExtensionContentTypeProvider = new FileExtensionContentTyp ...

  2. DOM – MutationObserver

    介绍 它和 IntersectionObserver, ResizeObserver 差不多, 都是观察 element 变化的. 它可以观察元素的 attribute 增加, 移除, 修改, app ...

  3. 实用技巧:根据menuconfig定位一个驱动涉及到的源文件

    根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码.新手不知道如何定位驱动相关源码,这篇文章将告之. 假设我手头有一块开发板,现在我想要获取板载ov ...

  4. .net6 使用gRPC示例

    创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(客户端),测试项目结构如下: 公共模型 测试接口相关类,放在公共类库中,方便服务端和客户端引用相同模型 public class R ...

  5. 高通ADSP USB流程

    在高通平台上,ADSP(Audio Digital Signal Processor,音频数字信号处理器)可以通过 USB 接口与主机进行数据传输,以下是大致的 ADSP USB 流程: 主机发起 U ...

  6. 使用SourceTree管理仓库代码

    1.首先我们需要下载sourcetree,你可以去官网下载自己需要的版本. 2.安装完毕之后,我们需要获取ssh密钥与github关联上才能使用 按下面的操作开始执行.确定之后,会出现一个字符界面,输 ...

  7. 神经网络之卷积篇:详解经典网络(Classic networks)

    详解经典网络 首先看看LeNet-5的网络结构,假设有一张32×32×1的图片,LeNet-5可以识别图中的手写数字,比如像这样手写数字7.LeNet-5是针对灰度图片训练的,所以图片的大小只有32× ...

  8. JOI 2020 Final

    A - 長いだけのネクタイ (Just Long Neckties) JOI 公司开了一个派对.有 \(n + 1\) 条领带,第 \(i\) 条领带的长度是 \(a_i\).有 \(n\) 名员工, ...

  9. 小集训 CSP-S 模拟赛

    DAY 1 A.喜剧的迷人之处在于 小思维题不必细讲 B. 镜中的野兽 状压+容斥 $ gcd (x) + lcm(x) = m $ ,可以得知 $ gcd(x) $ 一定是 m 的因子,那么就可以枚 ...

  10. 这十年我与广告不共戴天练就的十八般武艺 #PC去广告 #手机去广告

    背景 大家应该都体会过广告的苦恼,比如看着好看的电视,突然给播放广告,这时候痛苦系数飙升.随着社会进步,广告的载体,还有形式也越来越多,比如手机端各种APP启动广告,PC端软件弹窗,网站Banner等 ...