无法从主机访问容器中的服务器 运行
Cannot access server running in container from host
我有一个简单的 Dockerfile
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY . .
ENV GOPATH /app
RUN go install huru
EXPOSE 3000
ENTRYPOINT /app/bin/huru
我是这样建造的:
docker build -t huru .
和运行像这样:
docker run -it -p 3000:3000 huru
出于某种原因,当我使用浏览器访问 localhost:3000 时,我得到
我之前已经将容器中的服务器运行暴露给主机,所以不确定发生了什么。
根据问题中提供的信息,如果您看到应用程序的日志
(docker logs <container_id>
) 比 docker 应用程序成功启动,看起来端口公开已正确完成。
在任何情况下,为了在容器启动时查看端口映射 运行,您可以使用:
docker ps
并检查 "PORTS" 部分
如果你看到类似 0.0.0.0:3000->3000/tcp
那我可以考虑一些防火墙规则来阻止应用程序被访问...
另一个可能的原因(尽管您可能已经检查过了)是应用程序在您实际尝试在浏览器中访问它之前启动和完成。
在这种情况下,docker ps
不会显示退出的容器,但 docker ps -a
会。
我能想到的最后一件事是,在 docker 容器本身中,应用程序并没有真正响应端口 3000(我的意思是,启动脚本可能会在其他端口启动 Web 服务器,所以暴露端口 3000 并没有真正做任何有用的事情。
为了检查这一点,您可以使用 docker exec -it <container_id>
bash
之类的内容进入 docker 容器本身
并在容器 itelf
中使用 lsof -i
或 wget localhost:3000
检查打开的端口
试试这个,如果有任何输出日志。请检查它们...
FROM golang:latest
RUN apt -y update
RUN mkdir -p /app
COPY . /app
RUN go install huru
WORKDIR /app
docker build -t huru:latest .
docker run -it -p 3000:3000 huru:latest bin/huru
试试这个 url:http://127.0.0.1:3000
我使用环回
我有一个简单的 Dockerfile
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY . .
ENV GOPATH /app
RUN go install huru
EXPOSE 3000
ENTRYPOINT /app/bin/huru
我是这样建造的:
docker build -t huru .
和运行像这样:
docker run -it -p 3000:3000 huru
出于某种原因,当我使用浏览器访问 localhost:3000 时,我得到
我之前已经将容器中的服务器运行暴露给主机,所以不确定发生了什么。
根据问题中提供的信息,如果您看到应用程序的日志
(docker logs <container_id>
) 比 docker 应用程序成功启动,看起来端口公开已正确完成。
在任何情况下,为了在容器启动时查看端口映射 运行,您可以使用:
docker ps
并检查 "PORTS" 部分
如果你看到类似 0.0.0.0:3000->3000/tcp
那我可以考虑一些防火墙规则来阻止应用程序被访问...
另一个可能的原因(尽管您可能已经检查过了)是应用程序在您实际尝试在浏览器中访问它之前启动和完成。
在这种情况下,docker ps
不会显示退出的容器,但 docker ps -a
会。
我能想到的最后一件事是,在 docker 容器本身中,应用程序并没有真正响应端口 3000(我的意思是,启动脚本可能会在其他端口启动 Web 服务器,所以暴露端口 3000 并没有真正做任何有用的事情。
为了检查这一点,您可以使用 docker exec -it <container_id>
bash
并在容器 itelf
中使用lsof -i
或 wget localhost:3000
检查打开的端口
试试这个,如果有任何输出日志。请检查它们...
FROM golang:latest
RUN apt -y update
RUN mkdir -p /app
COPY . /app
RUN go install huru
WORKDIR /app
docker build -t huru:latest .
docker run -it -p 3000:3000 huru:latest bin/huru
试试这个 url:http://127.0.0.1:3000 我使用环回