首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过ip地址访问码头服务

如何通过ip地址访问码头服务
EN

Stack Overflow用户
提问于 2019-08-25 17:25:20
回答 2查看 2.9K关注 0票数 4

我刚开始使用docker,虽然我阅读了基本文档,并尝试部署一个简单的Spring ,但我可能少了很多东西。

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

  • sudo docker login
  • sudo docker tag docker-spring-boot phillalexakis/myfirstapi:01
  • sudo docker push phillalexakis/myfirstapi:01

然后,我使用docker run命令启动了run

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

当我访问localhost:7777/hello时,我得到了所需的响应

这是我的Dockerfile

代码语言:javascript
复制
FROM openjdk:8
ADD target/docker-spring-boot.jar docker-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]

基于这个回覆邮递,这是获取ip address的命令

代码语言:javascript
复制
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

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

代码语言:javascript
复制
Template parsing error: template: :1:24: executing "" at <.NetworkSettings.Networks>: map has no entry for key "NetworkSettings"

如果我设法得到IP,我能访问它并得到相同的响应吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-25 17:30:05

您使用的是图像名称,而不是容器名称。

通过执行docker ps获取容器名称。

容器ID是第一列中的值,容器名称是最后一列中的值。你可以两者兼用。

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

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

还有另一种选择:

在启动容器时,可以通过指定--name参数为其命名:

代码语言:javascript
复制
sudo docker run -p 7777:8085 --name spring_api phillalexakis/myfirstapi:01

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

票数 9
EN

Stack Overflow用户

发布于 2019-08-25 17:58:25

您不应该需要查找那个IP地址,而且它通常是无用的。

如果您试图从外部Docker空间调用服务,那么您做了正确的事情:使用docker run -p选项将其端口发布到主机,并使用主机的名称访问它。如果您试图从另一个容器创建网络调用它,请确保使用指向该网络的--net选项运行两个容器,并且它们可以使用对方的--name作为主机名到达其他容器,以及其他服务正在侦听的容器内部端口(-p选项没有影响,也不需要)。

Docker-内部IP地址只是在各种常见情况下不起作用。如果你是在另一个主机上,它将是无法触及的。如果本地Docker安装程序使用虚拟机(Docker Machine,Docker for Mac,minikube,.)您不能直接从主机到达IP地址。即使它确实工作,当您删除和重新创建容器时,它可能会改变。正如您注意到的那样,查找它还需要额外的(特权)操作,这是docker run -p路径所避免的。

具有文档的调用(如@DanielHilgarth所述,请确保在容器上运行它,而不是在图像上运行)。在特定的情况下,您需要使用未映射的端口,例如http://172.17.0.2:8085/hello

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57648191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档