小编rau*_*tos的帖子

如何从主机外部(同一网络)连接到docker容器[Windows]

我创建了我的第一个docker容器,它使用Go运行服务器,但我无法从主机外部访问它.我刚刚开始使用码头工具,所以我有点迷失在这里.

所以我有一个非常简单的Go代码启动服务器,我已经构建了docker镜像,它安装Go并在Linux基础映像中构建代码.我在端口8080上运行服务器,所以我将该端口暴露给运行容器的主机,如下所示:

docker run -p 8080:8080 dockertest
Run Code Online (Sandbox Code Playgroud)

这工作,我通过docker的机器IP(启动时出现在Docker Quickstart终端上的那个)访问服务器,问题是我无法访问我从主机外部托管的网站,所以如果我尝试要在我的手机上打开相同的IP地址,它只会给我一个错误:此网页不可用(ERR_CONNECTION_TIMED_OUT).

我也试过像这样指定IP:

docker run -p 192.168.0.157:8080:8080 dockertest
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我可以通过上面的命令行上的docker机器的IP和指定的IP访问该网站.我也不确定我应该在该命令中使用我的计算机IP写入哪个IP,我也尝试过127.0.0.1(localhost),但这给了我相同的结果:无法访问任何网站知识产权无论如何.

我已经搜索了这个问题,发现了许多StackOverflow问题但是没有帮助我解决我的问题,其中大多数都面向Linux或Mac,所以解决方案不适用于我的情况.

此外,我可以在我的计算机上运行Go代码,并通过我的计算机的IP从同一网络中的另一台设备访问该网站.我不明白为什么我在docker机器上运行它时无法访问它,我想到它可能与IP转发或其他东西有关但我在网络中是一个完整的菜鸟,我我主要是一名网络开发人员,几乎没有本地人的经验.

windows virtualbox docker

74
推荐指数
4
解决办法
10万
查看次数

用go处理文件上传

我最近开始玩,所以我仍然是一个菜鸟,如果我犯了太多错误,对不起.我一直试图解决这个问题很长一段时间,但我只是不明白发生了什么.在我的main.go文件中,我有一个主要功能:

func main() {
    http.HandleFunc("/", handler)
    http.HandleFunc("/submit/", submit)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Run Code Online (Sandbox Code Playgroud)

处理函数如下所示:

func handler(w http.ResponseWriter, r *http.Request) {
    data, _ := ioutil.ReadFile("web/index.html")
    w.Write(data)
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是服务网站的最佳方式提交功能如下所示:

func submit(w http.ResponseWriter, r *http.Request) {
    log.Println("METHOD IS " + r.Method + " AND CONTENT-TYPE IS " + r.Header.Get("Content-Type"))
    r.ParseMultipartForm(32 << 20)
    file, header, err := r.FormFile("uploadFile")
    if err != nil {
        json.NewEncoder(w).Encode(Response{err.Error(), true})
        return
    }
    defer file.Close()

    out, err := os.Create("/tmp/file_" + time.Now().String() + ".png")
    if err != nil {
        json.NewEncoder(w).Encode(Response{err.Error(), true})
        return
    } …
Run Code Online (Sandbox Code Playgroud)

html javascript http multipartform-data go

6
推荐指数
1
解决办法
5634
查看次数

标签 统计

docker ×1

go ×1

html ×1

http ×1

javascript ×1

multipartform-data ×1

virtualbox ×1

windows ×1