我是Docker的新手。尝试从用golang编写的简单服务器创建映像。服务器侦听端口8000,并每秒将当前时间写入客户端一次。
package main
import (
"fmt"
"io"
"net"
"time"
)
func main() {
listener, err := net.Listen("tcp", "localhost:8000")
if err != nil {
panic(err)
}
for {
conn, err := listener.Accept()
fmt.Println("Received connection")
if err != nil {
fmt.Println(err)
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
for {
_, err := io.WriteString(conn, time.Now().Format("15:04:05\n"))
if err != nil {
return
}
time.Sleep(1 * time.Second)
}
}
我的Dockerfile
FROM golang
WORKDIR $GOPATH/src/
RUN mkdir -p sandbox/clock1
WORKDIR $GOPATH/src/sandbox/clock1
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
EXPOSE 8000
ENTRYPOINT /go/bin/clock1
我用命令启动docker容器
docker run -p 8000:8000 -it --name clock1 clock1
然后我尝试使用docker IP地址连接到服务器
nc 192.168.1.3 8000
netcat无法连接并立即存在。您能指出我做错了什么吗?