使用Netcat连接到运行Golang服务器的Docker容器

时间:2020-06-25 14:27:04

标签: docker go netcat

我是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无法连接并立即存在。您能指出我做错了什么吗?

0 个答案:

没有答案