Остановите работающий Docker-контейнер, отправив SIGTERM
У меня очень простое приложение Go, прослушивающее порт 8080
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
w.Header().Set("Content-Type", "text-plain")
w.Write([]byte("Hello World!"))
})
log.Fatal(http.ListenAndServe(":8080", http.DefaultServeMux))
Я устанавливаю его в контейнер Docker и запускаю так:
FROM golang:alpine
ADD . /go/src/github.com/myuser/myapp
RUN go install github.com/myuser/myapp
ENTRYPOINT ["/go/bin/myapp"]
EXPOSE 8080
Затем я запускаю контейнер, используяdocker run
:
docker run --publish 8080:8080 first-app
Я ожидаю, что, как и большинство программ, я могу отправить SIGTERM запущенному процессуdocker run
и это заставит контейнер перестать работать. Я заметил, что отправка SIGTERM не имеет никакого эффекта, и вместо этого мне нужно использовать такую команду, какdocker kill
или жеdocker stop
.
Это намеренное поведение? Я спросилна форумах и на IRC так и не получил ответа.