如何使服务仅在特定的docker网络上侦听?

问题描述

我有连接到多个网络的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界面上列出,并且不能在etcdinternal-api网络上发现。

我如何-通常,指定我要服务监听的docker网络?

解决方法

选项:

  1. 保持容器仅连接到必要的网络(这是最佳做法)
  2. command: server --listen=< CONTAINER IP IN SPECIFIC NETWORK >:8080
  3. 在容器中设置防火墙

第二种选择的评论:

一种方法是使用docker-compose文件设置静态IP,或者使用以下命令获取当前运行的容器的IP:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <CONTAINER_NAME>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...