您的位置:首页 > 运维架构 > Docker

docker错误信息整理

2016-02-24 15:35 399 查看
1、Error response from daemon: Cannot start container 7cb4a74f9ef7bcc6fa659e3473aac10bd430c18aac43b4f6633920742e159284: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 192.168.42.8:5000 ! -i docker0: iptables: No chain/target/match by that name.

解决方案:重启docker

2、Docker无法启动 Could not find a free IP address range for interface 'docker0' 最方便的解决办法
2015-09-21 15:44 1294人阅读 评论(0) 收藏 举报
转载自:http://www.bubuko.com/infodetail-969451.html

阿里云的CentOS 6.6上安装Docker会无法启动,如果直接运行docker -d会看到错误提示:
WARN[0000] You are running linux kernel version 2.6.32-573.3.1.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.10.0.
INFO[0000] [graphdriver] using prior storage driver "devicemapper"
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1
FATA[0000] Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0"

关于docker进程没起来的原因可能会有很多,比如
模块没加载,系统内核版本过低,硬盘空间不足等等
一开始我以为是系统内核版本过低导致,百度又google了半天,还安装了3.10的内核库,都没用
最后看到有人说,虽然报警建议升级内核到3.10,但意义就是docker宣称在3.10下是stable,低于3.10不是就不能运行了,只是unstable而已,docker的依赖内核需要高于2.6.32就可以
其实本处的重要信息是报错最后一句,原因就是docker自动尝试的建立bridge的ip段正好被阿里云的路由表完全占据了
详细原因可以参见这个帖子:http://hanjianwei.com/2014/07/30/docker-on-aliyun/

网上有好多类似的解决方法,不过好麻烦,这里主要说下最方便的解决方法
先su到root
找一下docker的配置文件: find / -name "docker"
一般会在 /etc/sysconfig/docker
编辑这个文件 vi /etc/sysconfig/docker
修改other_args=这一行为:other_args=-bip=192.168.100.1/24
保存退出

可以重启docker了
service docker restart

3、docker不能启动容器,报一下错误Error running DeviceCreate (createSnapDevice) dm_task_run failed

1) service docker stop2) thin_check /home/docker/devicemapper/devicemapper/metadata3) thin_check --clear-needs-check-flag /home/docker/devicemapper/devicemapper/metadata4) service docker startEdit: –clear-needs-check-flag should be --clear-needs-check-flag . Minor but important.

4、重启docker服务器后 遇到 'device or resource busy'错误

如果有container在运行的时候重启 docker 服务, 可能会导致 container无法启动, 错误信息类似于
[plain] view plain copy print?在CODE上查看代码片派生到我的代码片
Error response from daemon: Cannot start container zookeeper: Error getting container ddf1dd91bbf46dc648268327f8f7c6fffaf2f19cda5cf1d97fdc701016d4332c from driver devicemapper: Error mounting '/dev/mapper/docker-8:1-525372-ddf1dd91bbf46dc648268327f8f7c6fffaf2f19cda5cf1d97fdc701016d4332c' on '/var/lib/docker/devicemapper/mnt/ddf1dd91bbf46dc648268327f8f7c6fffaf2f19cda5cf1d97fdc701016d4332c': device or resource busy
2015/01/26 04:42:07 Error: failed to start one or more containers
或者
[plain] view plain copy print?在CODE上查看代码片派生到我的代码片
d2859bd1f84b: Error pulling image (latest) from xxxxxx, Driver devicemapper failed to create image rootfs e6158e7962db43274de40fc3db65ad64811d43fe342dea633df20639f5a4e3cd: device e6158e7962db43274de40fc3db65ad64811d43fe342dea633df20639f5a4e3cd already exists 43fe342dea633df20639f5a4e3cd already exists c049b2b: Download complete
e6158e7962db: Error downloading dependent layers
这是一个Docker的 bug
解决方式是先找出没有umount的路径
cat /proc/mounts | grep "mapper/docker" | awk '{print $2}'
然后依次unmount

5、挂载宿主机目录后,在容器内对其进行操作,报“Permission denied”。
可通过两种方式解决:
1> 关闭selinux。
临时关闭:# setenforce 0
永久关闭:修改/etc/sysconfig/selinux文件,将SELINUX的值设置为disabled。
2> 以特权方式启动容器
指定--privileged参数
如:# docker run -it --privileged -v /test:/soft centos /bin/bash
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  虚拟化 docker