为什么Docker容器会自行退出

时间:2019-12-30 17:56:11

标签: dockerfile

我想为go文件构建并运行docker容器。

当我使用以下命令运行docker时:

$ docker run -d -p 80:80 hello-app
1f6e5787890527b045e6ef417f2ab0662ce35b7bad5418df21c19fac5b0cb465

如果我随后转到http://localhost:80,则无法正常工作。

如果我进入主机并执行docker ps,它为空

如果我进入主机并执行docker ps -a,则会得到:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
1f6e57878905        hello-app           "go-wrapper run"    2 minutes ago       Exited (2) 2 minutes ago                       zealous_feistel

我看到我的容器在这里。意思是当我运行某个容器时,它正在渲染然后关闭。 为什么Docker容器会自行退出而不起作用?

这是我的main.go

package main
import (
    "net/http"
    "io"
)
func main() {
    http.HandleFunc("", index)
    http.ListenAndServe(":80", nil)
}

func index(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "hello from docker")
}

和DockerFile;

FROM golang:1.8-onbuild

1 个答案:

答案 0 :(得分:0)

docker容器在容器中的主要进程退出后即退出。您可以在docker ps输出-Exited (2) 2 minutes ago

中看到这一点

您的hello-app未监听端口80上的连接,但启动后立即退出。