首页 > 解决方案 > 如何通过 ip 地址访问 docker 服务

问题描述

我是新手,docker我可能错过了很多,虽然我浏览了基本文档并且我正在尝试部署一个简单的 Spring Boot API

我已将我的API部署为docker-spring-boot .jar文件,然后docker使用以下命令安装并推送它:

然后我使用 docker命令启动API :run

sudo docker run -p 7777:8085 phillalexakis/myfirstapi:01

当我访问localhost:7777/hello我得到了想要的响应

这是我的Dockerfile

FROM openjdk:8
ADD target/docker-spring-boot.jar docker-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]

基于此已回答的帖子,此命令获取ip address

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

所以,我运行它,container_name_or_id = phillalexakis/myfirstapi:01我收到了这个错误

Template parsing error: template: :1:24: executing "" at <.NetworkSettings.Networks>: map has no entry for key "NetworkSettings"

如果我设法以某种方式获得IP意愿,我可以访问它并得到相同的响应吗?

这就是我的想法:ip:7777/hello

标签: spring-bootdocker

解决方案


您使用的是图像名称而不是容器名称。
通过执行获取容器名称docker ps
容器 ID 是第一列中的值,容器名称是最后一列中的值。您可以同时使用两者。

然后,当您拥有 IP 后,您将能够访问您的 API IP:8085/hello,而不是IP:7777/hello

7777 端口在 Docker 主机上可用,并映射到容器上的 8085 端口。如果您直接访问容器 - 当您使用其 IP 地址时,您需要使用容器公开的端口。


还有另一种选择:
您可以在启动时通过指定--name参数为容器命名:

sudo docker run -p 7777:8085 --name spring_api phillalexakis/myfirstapi:01

现在,从您的 Docker 主机,您可以使用该名称访问您的 API:spring_api:8085/hello


推荐阅读