0

In a Kubernetes pod, I have:

  • busybox container running in a dind container
  • fluentd container

I understand if dind wants to access fluentd, it needs to simply connect to localhost:9880. But what if busybox wants to access fluentd as the depicted diagram below. Which address should I use?

dind access to another container

4

1 回答 1

1

这些提示可以帮助您:

1. 第一种方法

从您最初尝试访问它的 docker:latest 容器内部,它将在为 docker:dind 容器设置的任何主机名上可用。在这种情况下,您使用了 --name dind,因此 curl dind:busybox_port 将为您提供标准。

然后您可以从 docker:dind 容器(busybox)内部连接到 fluentd,它将在 localhost:9880 上可用。

2. 第二种方法

另一种方法是 EXPOSE [/<protocol>...],在这种情况下,我们假设busyboox 和 fluentd 在不同的网络中您也可以在 docker run 命令中指定它,例如:

$ docker run --expose=1234 busybox

但是EXPOSE不允许通过定义的端口与同一网络之外的容器或主机进行通信。要允许这种情况发生,您需要发布端口。

发布端口并将其映射到主机

要在运行容器时发布端口,请在 docker run 上使用-p标志来发布和映射一个或多个端口,或者使用-P标志来发布所有暴露的端口并将它们映射到高阶端口。

$ docker run -p 80:80/tcp -p 80:80/udp busybox

然后使用localhost:9880从busybox连接到fluentd

您可以在此处找到更多信息:docker-in-docker.

我希望它有所帮助。

于 2019-06-07T10:20:41.887 回答