我在使用 Ubuntu 映像的 Windows 10 上使用 WSL2,以及使用 WSL 集成的 Docker for Desktop Windows (2.2.2.0)。
我有一个 Rust TCP 服务器。当我使用cargo run(或之后的二进制文件cargo install)运行它时,它会做正确的事情,我可以发送Ctrl-C到它终止。我没有在代码中做任何显式的信号处理。
我把它变成了一个 Docker 镜像。这是 Dockerfile。
FROM rust:1.40 as builder
COPY . .
RUN cargo install --path . --root .
FROM debian:buster-slim
COPY --from=builder ./bin/myserver ./myserver
EXPOSE 8080
ENTRYPOINT ["./myserver"]
Run Code Online (Sandbox Code Playgroud)
然后我做:
docker build -t myserver .
docker run -it --rm -p 8080:8080 myserver
Run Code Online (Sandbox Code Playgroud)
试图Ctrl-C进程^C在终端中显示字符,但信号似乎没有到达进程。我必须使用docker kill …