首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从码头容器中获取主机上的映射端口?

如何从码头容器中获取主机上的映射端口?
EN

Stack Overflow用户
提问于 2015-09-07 18:56:41
回答 3查看 33.9K关注 0票数 17

我想在不同主机上的一些码头容器中运行一个任务。我还编写了一个管理应用程序来管理容器(启动任务、停止任务、获取状态等)。一旦容器启动,它将发送一个http请求到管理器及其地址和端口,因此管理器将知道如何管理容器。

由于可能有多个容器运行在同一台主机上,因此它们将被映射到不同的端口。要在我的经理上注册一个容器,我必须知道每个容器映射到哪个港口。

如何将映射的端口放在(一个码头容器)内?

这里有一个解决方案,如何从码头集装箱中知道主机的映射端口?。但是,如果我使用-P运行容器,则不适用。由于这个问题是一年多前提出的,我想知道是否有一个新的特性添加到码头,以解决这个问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-07 21:15:20

一旦容器启动,它将向管理器发送http请求,并提供其地址和端口。

这是行不通的。从容器内部,您无法确定容器端口映射到哪个码头主机端口。

我能想到的是让容器打开到管理器的websocket连接,这才是最接近您描述的工作方式。这样的连接将允许在您的管理器和容器之间进行两种方式的通信,同时仍然处于HTTP之上。

你想要达到的目标叫做服务发现。已经有用于服务发现的工具可以与Docker一起工作。你应该从中挑一个,而不是试着做自己的。

例如,见:

如果您真的想实现您的服务发现系统,一种方法是让您的经理使用docker event命令(或码头客户累赘之一)。这将使您的经理能够得到容器创建/删除的通知,而不需要在容器端执行任何操作。

然后查询码头主机,找出用docker port映射到容器的端口。

票数 3
EN

Stack Overflow用户

发布于 2015-09-07 19:49:19

你也可以docker port container_id

医生

https://docs.docker.com/engine/reference/commandline/port/

来自医生的例子

代码语言:javascript
复制
$ docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
$ docker port test 7890/tcp
0.0.0.0:4321
$ docker port test 7890/udp
2014/06/24 11:53:36 Error: No public port '7890/udp' published for test
$ docker port test 7890
0.0.0.0:4321
票数 17
EN

Stack Overflow用户

发布于 2016-12-14 13:19:07

我共享/var/run/docker.sock到容器并获取自己的信息

代码语言:javascript
复制
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock alpine:latest sh

集装箱壳

代码语言:javascript
复制
env //get HOSTNAME

curl --unix-socket /var/run/docker.sock http://localhost/containers/3c6b9e44a622/json

3c6b9e44a622是您的主机名。

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

https://stackoverflow.com/questions/32444612

复制
相关文章

相似问题

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