我想为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
答案 0 :(得分:0)
docker容器在容器中的主要进程退出后即退出。您可以在docker ps
输出-Exited (2) 2 minutes ago
您的hello-app未监听端口80上的连接,但启动后立即退出。