我正在尝试运行以下Docker命令:
docker run -it --net container:some-mongo nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap我得到的DOS错误是:"mypcap.pcap:没有这样的文件或目录“。如果我运行这个命令,它就会按预期工作:
docker run -it --net container:some-mongo nicolaka/netshoot tcpdumpDocker正在寻找什么路径位置: mypcap.pcap?
我已经尝试过docker inspect some-mongo,但是这只能告诉我相对路径。
我也试过用谷歌搜索这个,但我的研究告诉我,Docker可以在很多不同的地方存储图像和容器。
如何找到tcpdump正在查找的路径?
它是Windows主机上的Linux容器。
发布于 2019-05-06 17:19:01
查找路径位置由WORKDIR指定。
默认值为/。
WORKDIR在Dockerfile中指定。
文档
补充
如果some-mongo容器中存在mypcap.pcap,它将如下所示。
# e.g. Prerequisites /tmp/mypcap.pcap exists in some-mongo
# copy to host machine.
docker cp some-mongo:/tmp/mypcap.pcap C:¥tmp¥mypcap.pcap
# mount mypcap.pcap directory.
docker run -it -v C:¥tmp:/opt/tcpdump nicolaka/netshoot tcpdump -qns 0 -X -r /opt/tcpdump/mypcap.pcap发布于 2019-05-06 17:22:46
如果您以这种方式运行该命令,它将在"/“中查找它。但是您可以通过指定完整路径来为其指定任意路径。
您还应该映射mpcap文件:
docker run -it --net container:some-mongo \
-v $(pwd)/mypcap.pcap:/mypcap.pcap \
nicolaka/netshoot \
tcpdump -qns 0 -X -r mypcap.pcap或在一行上:
docker run -it --net container:some-mongo -v $(pwd)/mypcap.pcap:/mypcap.pcap nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap这将从本地目录映射它。
发布于 2019-05-06 17:24:13
确切地回答你的问题,我们可以在检查你的镜像(docker inspect nicolaka/netshoot:latest)时看到没有定义WorkingDir。在这种情况下,默认目录是/ (请参见What's the default WORKDIR in docker?)。但您必须了解,这是正在运行的容器中的目录,而不是主机上的目录。
请注意,您使用的命令(即docker inspect some-mongo)并不是检查您的实际镜像/容器,而是您选择的作为连接网络的基础的镜像/容器。
如果我理解正确的话,您的文件位于本地命令行的当前目录中。要执行您想要的操作,需要使mypcap.pcap文件可用于您的容器。
根据你的需求,基本上有两种方法可以做到这一点。
构建扩展映像
其想法是通过复制其中的文件来扩展您的基本映像。为此,您需要一个Dockerfile
FROM nicolaka/netshoot:latest
COPY mypcap.pcap .然后构建镜像
docker build . -t myextendedimage:mytag并基于新镜像启动一个容器
docker run -it --net container:some-mongo myextendedimage:mytag tcpdump -qns 0 -X -r mypcap.pcap绑定将您的文件挂载到容器中
在您的情况下,这可能是我的首选。假设pcap文件位于C:\tmp\mypcap.pcap中
docker run -it --net container:some-mongo -v C:\tmp\mypcap.pcap:/mypcap.pcap nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap请注意,您可以将此文件挂载到映像中您喜欢的任何位置:
docker run -it --net container:some-mongo -v C:\tmp\mypcap.pcap:/my/random/dir/mypcap.pcap nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcaphttps://stackoverflow.com/questions/56001295
复制相似问题