tcpdump报告Docker容器中以–privileged开头的错误

我做了一个基于Ubuntu的数据包发送应用程序镜像,并安装了tcpdump 。 当我用--privileged启动容器并尝试tcpdump -i eth0 ,它报告一个错误:

 root@test:/home/test# docker run --rm -ti --privileged mytliulei/xfdsend /bin/bash root@6199493fb2b9:/# tcpdump -i eth0 tcpdump: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: Permission denied 

但是,当我启动没有 – --privileged的Docker容器时,它是可以的 。 为什么?

 root@test:/home/test# docker run --rm -ti mytliulei/xfdsend /bin/bash root@c7b7e2a9ec99:/# tcpdump -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 

Docker版本:

 docker version Client version: 1.6.0 Client API version: 1.18 Go version (client): go1.4.2 Git commit (client): 4749651 OS/Arch (client): linux/amd64 Server version: 1.6.0 Server API version: 1.18 Go version (server): go1.4.2 Git commit (server): 4749651 OS/Arch (server): linux/amd64 

Dockerfile:

 FROM ubuntu:14.04 MAINTAINER Liu Lei <xxx@gmail.com> RUN apt-get update \ && apt-get install -y python \ python-dev \ tcpdump RUN pip2 install scapy \ && pip2 install rpyc \ && pip2 install robotremoteserver \ && pip2 install daemonocle 

前几天我碰到这个错误,这个错误似乎与以下几点有关:

https://github.com/dotcloud/docker/issues/5490

一个解决方法,为我工作是移动tcpdump:

(例如,使用dockerfile的tcpdump中的mv)

 RUN apt-get -y install tcpdump RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump