docker容器状态出现Exit(1)的问题及解决

 更新时间:2023年06月26日 16:35:09   作者:龙王.*?  
这篇文章主要介绍了docker容器状态出现Exit(1)的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

docker容器状态出现Exit(1)

今天docker一个容器出现状态为Exited(1),为了让它运行起来,我把它重启restart或删掉重新运行,结果还是出现这个Exited(1)的问题。

后来查找各种资料,倒腾了好久,才解决掉这个问题?

  • docker stop 容器名
  • docker rm 容器名
  • 最主要的是,在删除完容器后,还要手动将本地的关于容器的配置目录给删掉。比如我上面这个容器的配置文件就在/var/fdfs下。执行命令sudo rm -rf storage。
  • 然后再重新由镜像启动这个容器就可以了。

修改exit状态的docker容器

Linux 系统运行基础

1.boot file system ( bootfs )

包含 Boot Loader与Kernel文件,用户不能修改这些文件。并且在系统启动过程完成之后, 整个系统的内核都会被加载进内存。此时bootfs会被卸载, 从而释放出所占用的系统内存。

在容器中可以运行不同版本的Linux, 说明对于同样内核版本的不同的 Linux 发行版的 bootfs 都是一致的, 否则会无法启动。因此可以推断, Docker运行是需要内核支持的。

Linux系统中典型的bootfs目录: (核心) /boot/vmlinuz、(核心解压缩所需 RAM Disk) /boot/initramfs

2.root file system ( rootfs )

1) 不同的Linux发行版本, bootfs相同, rootfs不同(二进制文件)。

2) 每个容器有自己的 rootfs, 它来自不同的 Linux 发行版的基础镜像,包括 Ubuntu, Debian 和 SUSE 等。

3) 使用不同的rootfs 就决定了, 在构建镜像的过程中, 可以使用哪些系统的命令。

4) 典型的rootfs 目录: /dev、/proc、/bin、/etc、 /lib、/usr

OverlayFS 存储原理

OverlayFS 结构分为三个层: LowerDir、Upperdir、MergedDir

1.LowerDir (只读)

只读的 image layer,其实就是 rootfs, 在使用 Dockfile 构建镜像的时候就定好了

2.Upperdir (读写)

upperdir 则是在 lowerdir 之上的一层, 为读写层。容器在启动的时候会创建, 所有对容 器的修改, 都是在这层。比如容器启动写入的日志文件,或者是应用程序写入的临时文件

3.MergedDir (展示)

merged 目录是容器的挂载点,在用户视角能够看到的所有文件

修改exit状态的docker容器

查看容器状态 sudo docker ps -a,可以看到当前容器是关闭的

在这里插入图片描述

查看容器日志,查找关闭原因

sudo docker logs <容器名 或 容器ID>

在这里插入图片描述

获取容器文件存储的路径

sudo docker inspect <容器名或容器ID> | grep -A 10 GraphDriver-A 

表示在搜索到该关键词后,打印下面 n 行

在这里插入图片描述

mergedDir 是不存在的,我们需要修改的文件都存储在 UpperDir 目录下

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker之如何设置日志文件大小及个数

    docker之如何设置日志文件大小及个数

    这篇文章主要介绍了docker之如何设置日志文件大小及个数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • docker image tag为什么出现none的原因及解决

    docker image tag为什么出现none的原因及解决

    当我们使用docker加载新的镜像时,有时候会发现Repository和Tag名称都为none的情况,这通常是由于没有指定正确的标签名称或者仓库名称所导致的,本文主要介绍了docker image tag为什么出现none的原因及解决,感兴趣的可以了解一下
    2023-10-10
  • Docker Compose快速部署多容器服务实战的实例详解

    Docker Compose快速部署多容器服务实战的实例详解

    使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具,本文给大家介绍Docker Compose快速部署多容器服务实战,感兴趣的朋友一起看看吧
    2022-02-02
  • Docker基本概念和底层原理解析

    Docker基本概念和底层原理解析

    Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,本文给大家介绍docker概念和底层原理,感兴趣的朋友一起看看吧
    2022-03-03
  • docker容器中cron任务未执行的原因分析及解决

    docker容器中cron任务未执行的原因分析及解决

    在Ubuntu 22.04镜像中cron任务执行失败,可能与pam权限或文件权限设置有关,解决方法包括动态加载任务至crontab及将文件权限设为600(容器默认umask=0022),后者因权限冲突导致执行失败,推荐此方案
    2025-08-08
  • Docker部署Minio集群的实现步骤

    Docker部署Minio集群的实现步骤

    本文介绍 Docker Compose 部署 Minio 集群的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • Docker环境中部署n8n支持Python节点(两种部署方式)

    Docker环境中部署n8n支持Python节点(两种部署方式)

    本文介绍如何在Docker环境中部署n8n工作流自动化工具,并确保支持 Code in Python (Native) 节点,本文给大家分享两种常见的部署方式,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • 如何给一个正在运行的Docker容器动态添加Volume

    如何给一个正在运行的Docker容器动态添加Volume

    这篇文章主要介绍了如何给一个正在运行的Docker容器动态添加Volume,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • docker配置镜像Docker pull时报错:https://registry-1.docker.io/v2/问题

    docker配置镜像Docker pull时报错:https://registry-1.docker.io/v

    Docker拉镜像报错的原因可能是网络问题、认证问题、注册中心URL不正确或注册中心服务不可用,解决方法包括重载和重启Docker服务
    2026-01-01
  • Docker Hub镜像Pull失败的解决全过程

    Docker Hub镜像Pull失败的解决全过程

    文章解决Ubuntu环境下Docker拉取镜像失败问题,分析网络限制、DNS污染及下载速度慢等原因,提出配置国内镜像加速器的解决方案,包括编辑daemon.json并重启Docker服务
    2025-09-09

最新评论