java—使用spring boot、tcpdump和docker捕获所有主机网络

rqcrx0a6  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(165)

我有一个spring启动应用程序。根据请求,它执行tcpdump,如下所示

String cmd = "tcpdump -n host " + this.host;
Process process = Runtime.getRuntime().exec(cmd);
InputStream stream = process.getInputStream();
...

我想将此应用程序dockerize以在linux以外的操作系统上工作,因此我准备了dockerfile:

FROM openjdk:15-alpine

RUN apk --no-cache add tcpdump
COPY target/app.jar /usr/src/app.jar

CMD java ... (runs spring app)

和 Docker

version: '3.5'

services:
  service_name:
    network_mode: host
    container_name: service_name
    build:
      context: .
    environment:
      - TZ=Europe/Warsaw
      - spring.profiles.active=development
      - spring.liquibase.contexts=development

我预料到了 network_mode: host 为了让docker使用主机网络,这样它就可以被扫描,并且它可以根据spring应用程序的请求接收数据,但测试表明,事实并非如此。为什么?我怎样才能解决这个问题?
我在文件中读到:
由于在docker desktop for windows中实现网络的方式,您无法在主机上看到docker0接口。这个接口实际上在虚拟机中。
这是否意味着,我无法从windows上的docker连接到主机machnine?我怎么能逃避呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题