首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器镜像的默认位置

容器镜像的默认位置
EN

Stack Overflow用户
提问于 2019-05-06 16:17:42
回答 3查看 234关注 0票数 0

我正在尝试运行以下Docker命令:

代码语言:javascript
复制
docker run -it --net container:some-mongo nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap

我得到的DOS错误是:"mypcap.pcap:没有这样的文件或目录“。如果我运行这个命令,它就会按预期工作:

代码语言:javascript
复制
docker run -it --net container:some-mongo nicolaka/netshoot tcpdump

Docker正在寻找什么路径位置: mypcap.pcap?

我已经尝试过docker inspect some-mongo,但是这只能告诉我相对路径。

我也试过用谷歌搜索这个,但我的研究告诉我,Docker可以在很多不同的地方存储图像和容器。

如何找到tcpdump正在查找的路径?

它是Windows主机上的Linux容器。

EN

回答 3

Stack Overflow用户

发布于 2019-05-06 17:19:01

查找路径位置由WORKDIR指定。

默认值为/

WORKDIR在Dockerfile中指定。

文档

补充

如果some-mongo容器中存在mypcap.pcap,它将如下所示。

代码语言:javascript
复制
# 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
票数 0
EN

Stack Overflow用户

发布于 2019-05-06 17:22:46

如果您以这种方式运行该命令,它将在"/“中查找它。但是您可以通过指定完整路径来为其指定任意路径。

您还应该映射mpcap文件:

代码语言:javascript
复制
docker run -it --net container:some-mongo \
-v $(pwd)/mypcap.pcap:/mypcap.pcap \
nicolaka/netshoot \
tcpdump -qns 0 -X -r mypcap.pcap

或在一行上:

代码语言:javascript
复制
docker run -it --net container:some-mongo -v $(pwd)/mypcap.pcap:/mypcap.pcap nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap

这将从本地目录映射它。

票数 0
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
FROM nicolaka/netshoot:latest
COPY mypcap.pcap .

然后构建镜像

代码语言:javascript
复制
docker build . -t myextendedimage:mytag

并基于新镜像启动一个容器

代码语言:javascript
复制
docker run -it --net container:some-mongo myextendedimage:mytag tcpdump -qns 0 -X -r mypcap.pcap

绑定将您的文件挂载到容器中

在您的情况下,这可能是我的首选。假设pcap文件位于C:\tmp\mypcap.pcap

代码语言:javascript
复制
docker run -it --net container:some-mongo -v C:\tmp\mypcap.pcap:/mypcap.pcap nicolaka/netshoot tcpdump -qns 0 -X -r mypcap.pcap

请注意,您可以将此文件挂载到映像中您喜欢的任何位置:

代码语言:javascript
复制
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.pcap
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56001295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档