DNS解析不适用于Docker映像



我有一个Rust程序,需要进行一些DNS查找。它适用于以下Dockerfile:

FROM rust:1.63.0-bullseye AS build
WORKDIR /app
COPY . .
RUN cargo build --release
EXPOSE 8080
ENTRYPOINT ["/app/target/release/router"]

我试着为这个程序创建一个有点极简主义的图像,比如:

FROM rust:1.63.0-bullseye AS build
WORKDIR /app
COPY . .
RUN cargo build --release
RUN mkdir -p /app/lib
RUN cp -LR $(ldd ./target/release/router | grep "=>" | cut -d ' ' -f 3) /app/lib
FROM scratch AS websocket-router-rust
WORKDIR /app
COPY --from=build /app/lib /app/lib
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
COPY --from=build /app/target/release/router /app/router
ENV LD_LIBRARY_PATH=/app/lib
EXPOSE 8080
ENTRYPOINT ["/app/router"]

然而,当使用后一个Dockerfile时,DNS查找似乎会失败。你知道应该从构建阶段复制哪些文件吗?

更新:通过在Docker镜像中运行文件访问跟踪程序,同时向服务器发出请求,然后复制所有使用COPY读取的文件,使其正常工作。。。Dockerfile有点乱,但现在还不到30MB。主要问题是ldd不返回libnss so,所以这些so在图像中丢失了。

您可以在/etc/docker/daemon.json文件中设置DNS地址:

{
"dns": ["10.0.0.2", "8.8.8.8"]
}

相关内容

  • 没有找到相关文章

最新更新