当前位置: 首页 > 知识库问答 >
问题:

如何通过ip地址访问docker服务

龚博涛
2023-03-14

我是Docker的新手,虽然我阅读了基本文档,并尝试部署一个简单的Spring BootAPI,但我可能缺少很多东西

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

  • SUDO docker登录
  • SUDO docker标记docker-spring-boot phillalexakis/myfirstAPI:01
  • SUDO docker推送Phillalexakis/MyFirstAPI:01

然后使用dockerrun命令启动API:

SUDO docker运行-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地址

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

共有1个答案

刘子实
2023-03-14

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

然后,当您拥有IP时,您将能够访问IP:8085/hello的API,而不是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

 类似资料:
  • 这是我的docker-compose.yml代码: 下面是我的traefik.toml代码:

  • 问题内容: 我在Mac OS X上使用自制软件设置了jenkins,它 可以通过主机正常工作,或者无法通过主机名/ ipaddress访问jenkins实例: 即使从本地计算机(詹金斯主机本身)也无法访问这两个链接。同时执行命令并正常工作。 问题答案: 事实证明,启动代理配置为仅侦听127.0.0.1(或localhost)。要修复该詹金斯经纪人的plist: 并修改为而不是

  • 问题内容: 我正在尝试跟踪和记录使用PHP 来访问我的网站的用户/访问者。PHP中IP地址跟踪的一种典型方法。 但是,我正在使用CloudFlare进行缓存等,并以CloudFlare的方式接收其IP地址: 108.162.212。-108.162.239。 在仍然使用CloudFlare的同时检索实际用户/访问者IP地址的正确方法是什么? 问题答案: 云耀斑可用的其他服务器变量是: 真正的访客I

  • 如何访问postgres-docker container其他docker container没有ip地址?我想通过使用MyWeb将数据存储在postgres中。在jar中给定主机,如localhost:5432/db。 这是我的作曲文件:

  • 问题内容: 如何在Node.js HTTP服务器应用程序中通过IP地址限制访问? 我正在寻找这样的东西: 我只需要允许访问该站点的几个IP地址。我怎样才能做到这一点? 问题答案: 我不确定这种方法的安全性,但这里是从网上答案中收集的: 请,一个更精通节点的人-纠正我

  • 我有两个docker容器在我的Mac主机上运行-容器1是docker Hub的Jenkins,容器2是docker Hub的SonarQube。我有两个容器成功运行。我可以通过从我的主机访问Jenkins,我可以通过访问我的SonarQube。 詹金斯容器是这样启动的: SonarQube容器是这样启动的: 难道我不应该能够从我的主机通过它们的内部IP地址访问每个容器吗? 我如何测试一个容器(例如