我有一个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?我怎么能逃避呢?
暂无答案!
目前还没有任何答案,快来回答吧!