受众:
本文适用于熟悉码头工作的人员,并希望解决使用devicemapper存储/图形驱动程序时遇到的特定问题。

概述:
虽然这不是专门用于设计师的问题,但是目前参与此驱动程序的技术人员会受到此影响。

使用'devicemapper'存储驱动程序时看到的几个常见问题是在尝试停止和/或删除contianer时。
在docker守护程序日志中,您可能会看到如下输出:

[error] deviceset.go:792 Warning: error waiting for device ac05cffda663a01cbc37879bc146fcd68d0f95b5b141f60da2b64579add1f4ef to close:
Timeout while waiting for device ac05cffda663a01cbc37879bc146fcd68d0f95b5b141f60da2b64579add1f4ef to close

或如:

Cannot destroy container ac05cffda663: Driver devicemapper failed to remove root filesystem ac05cffda663a01cbc37879bc146fcd68d0f95b5b141f60da2b64579add1f4ef: Device is Busy
[8ad069f7] -job rm(ac05cffda663) = ERR (1)
[error] server.go:1207 Handler for DELETE /containers/{name:.*} returned error: Cannot destroy container ac05cffda663: Driver devicemapper failed to remove root filesystem ac05cffda663a01cbc37879bc146fcd68d0f95b5b141f60da2b64579add1f4ef: Device is Busy
[error] server.go:110 HTTP Error: statusCode=500 Cannot destroy container ac05cffda663: Driver devicemapper failed to remove root filesystem ac05cffda663a01cbc37879bc146fcd68d0f95b5b141f60da2b64579add1f4ef: Device is Busy

诊断:
幕后发生的事情是,devicemapper已经建立了一个新的瘦快照设备来装载容器。
在该容器的寿命期间,主机上与docker无关的另一个PID可能已经从根命名空间启动并取消共享一些命名空间,即mount命名空间(CLONE_NEWNS)。 在此非共享主机PID中引用的安装程序中,它包含瘦快照设备及其用于容器运行时的安装。

当容器停止并卸载时,它可能会从根命名空间卸载设备,该umount不会传播到非共享主机PID。
当容器被删除时,devicemapper尝试删除瘦快照设备,但是由于非共享主机PID包含对其mountinfo中的设备的引用,内核会将设备看作是忙碌(EBUSY)。 尽管事实上,根安装名称空间的安装可能不再显示此设备并挂载。

再生产:
1)启动docker守护程序(使用调试和强制devicemapper):`sudo docker -d -D -g devicemapper`
2)启动一个容器:`sudo docker run -it busybox top`
3)运行带有unshared mount命名空间的pid:
3.a)编译一个简单的C应用程序:http://pastebin.com/HfSn8udJ
3.b)使用unshare(1)实用程序:`sudo unshare -m top`
4)停止或杀死步骤#2中的容器
5)看docker守护进程日志

如果在docker守护程序尝试删除容器时,从#3中删除/退出非共享应用程序,则守护程序可以很好地清理容器。 否则有左侧(/ var / lib / docker)中的cruft,并且守护程序将没有要删除的容器的记录。

调查:
可视化此继承的工具并不真正存在,因此导出弊端可能需要一些努力。
有时候,“perf”工具可以快速指出罪魁祸首。 就像是:

perf probe -a clone_mnt
perf record -g -e probe:clone_mnt -aR docker -d
[...]
perf report

解决方法:

先找出没有umount的路径:

cat /proc/mounts | grep "mapper/docker" | awk '{print $2}'

umount 查找出来的路径:

umount /var/lib/docker/devicemapper/mnt/ddf1dd91bbf46dc648268327f8f7c6fffaf2f19cda5cf1d97fdc701016d4332c

修改完成后记得重启docker服务。

原文地址:http://blog.hashbangbash.com/2014/11/docker-devicemapper-fix-for-device-or-resource-busy-ebusy/

Docker: devicemapper fix for “device or resource busy” (EBUSY) Cannot start container的更多相关文章

  1. docker中执行sed: can't move '/etc/resolv.conf73UqmG' to '/etc/resolv.conf': Device or resource busy错误的处理原因及方式

    错误现象 在docker容器中想要修改/etc/resolv.conf中的namesever,使用sed命令进行执行时遇到错误: / # sed -i 's/192.168.1.1/192.168.1 ...

  2. Docker之rm: Device or resource busy

    docker 容器里 rm -rf /data 提示: rm: cannot remove ‘/data’: Device or resource busy 原因: 在建立容器的时候做了相应目录的挂载 ...

  3. docker device or resource busy

    docker-compose -f docker-compose.yml up -d  时候报错 device or resource busy 使用 docker-compose down 会导致一 ...

  4. Docker - 解决在容器内删除和主机映射的目录而报错 rm: cannot remove 'webapps': Device or resource busy 的问题

    问题背景 docker run -d --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7 使用 ...

  5. 加载驱动模块时Device or resource busy的解决方法

    加载驱动模块时Device or resource busy的解决方法 加载驱动模块时Device or resource busy的解决方法 insmod或modprobe驱动模块时Device o ...

  6. android java.io.IOException: open failed: EBUSY (Device or resource busy)

    今天遇到一个奇怪的问题, 测试在程序的下载界面,下载一个文件第一次下载成功,删除后再下载结果下载报错, 程序:file.createNewFile(); 报错:java.io.IOException: ...

  7. 在加载模块时出现cannot insert '*.ko': Device or resource busy错误

    制作了一个模块,在加载是出现了cannot insert '*.ko': Device or resource busy错误. 原因: 是由于模块使用的是静态分配设备号,而这个设备号已经被系统中的其他 ...

  8. wlan0 Interface doesn't support scanning : Device or resource busy

    Problem: wlan0 Interface doesn't support scanning : Device or resource busy. Solved Way: sudo ifcong ...

  9. 嵌入式linux插入内核模块Error: could not insert module xxx.ko: Device or resource busy处理

    设备号冲突导致 处理方法: 1.输入$cat /proc/devices 查看驱动的设备号 2.选择一个不冲突的设备号进行编译 参考文献: 1.http://blog.csdn.net/zzc_19/ ...

随机推荐

  1. 5.OpenStack添加镜像服务

    添加镜像服务 这里是安装在控制器上 创建数据库 mysql -uroot -ptoyo123 CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glanc ...

  2. 设计模式-python实现

    设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码.反之,设计模式更为高级,它是一种必须在特定情 ...

  3. cloudflare 301 重定向设置

    https://support.cloudflare.com/hc/en-us/articles/218411427#redirects 将 https://dfg.com/* 设置301重定向到 h ...

  4. 实现如下语法的功能:var a = add(2)(3)(4); //9

    从汤姆大叔的博客里看到了6个基础题目:本篇是第6题 - 实现如下语法的功能:var a = add(2)(3)(4); //9 解题关键:add()函数需要返回一个加法函数,而不是一个普通的值,即定义 ...

  5. UVALive 3027 Corporative Network (带权并查集)

    题意: 有 n 个节点,初始时每个节点的父节点都不存在,你的任务是执行一次 I 操作 和 E 操作,含义如下: I  u  v   :  把节点 u  的父节点设为 v  ,距离为| u - v | ...

  6. ELK获取用户真实IP

    原理:在filebeat这台服务器上的nginx中获取到客户端真实IP($clientRealIp),    然后在访问日志中添加"$clientRealIp"字段.1. 通过ma ...

  7. [BZOJ 1509] 逃学的小孩

    Link: BZOJ 1509 传送门 Solution: 一开始受样例影响又犯了想当然的毛病……图中的C点不一定在直径上! 3次$dfs$求出树的直径及直径的两个端点$rt1,rt2$到每个点的距离 ...

  8. POJ 2135 Farm Tour (费用流)

    [题目链接] http://poj.org/problem?id=2135 [题目大意] 有一张无向图,求从1到n然后又回来的最短路 同一条路只能走一次 [题解] 题目等价于求从1到n的两条路,使得两 ...

  9. 归档 & 解档

    代码实现 遵守协议 class AccessToken: NSObject, NSCoding 实现协议方法 // MARK: - 归档&解档 required init(coder aDec ...

  10. mac mysql命令行

    https://www.cnblogs.com/lonecloud/p/5841522.html mac下使用mysql控制台命令行   命令行中输入 open .bash_profile 然后将 a ...