Я использую WSL2 на Windows 10 с использованием образа Ubuntu и Docker для рабочего стола Windows (2.2.2.0) с интеграцией WSL.
У меня есть сервер 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"]
Я тогда делаю:
docker build -t myserver .
docker run -it --rm -p 8080:8080 myserver
Попытка Ctrl - C, процесс показывает ^C
символ в терминале, но сигнал, кажется, не достигает процесса. У меня есть для использования docker kill
. Я читал другие сообщения, такие как это и это . Предполагается, что комбинация -it
и использование версии параметра массива ENTRYPOINT
или CMD
должны позволить сигналу достичь его, однако, похоже, это не помогает мне.
Видеть если это было связано с моей настройкой (Docker для Desktop, WSL и т. д. c.) или моим Dockerfile, я следовал README для docker -http-https-echo и Я могу Ctrl - C процесс. Проверка Dockerfile не показывает, что он делает что-то отличное от меня, но я явно что-то упускаю.