问题描述
我有连接到多个网络的docker服务。 例如-服务将附加到traefik入口网络-以及其他一些网络,例如etcd或minio。撰写文件可能如下所示:
version: "3.8"
services:
myservice:
image: ...
command: server --listen=0.0.0.0:8080
networks:
- public
- internal-api
- etcd
现在,当前,我们可以在示例中看到监听地址0.0.0.0:8080
但这不是我想要的-我希望此服务仅在public
界面上列出,并且不能在etcd
或internal-api
网络上发现。
我如何-通常,指定我要服务监听的docker网络?
解决方法
选项:
- 保持容器仅连接到必要的网络(这是最佳做法)
-
command: server --listen=< CONTAINER IP IN SPECIFIC NETWORK >:8080
- 在容器中设置防火墙
第二种选择的评论:
一种方法是使用docker-compose文件设置静态IP,或者使用以下命令获取当前运行的容器的IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <CONTAINER_NAME>