从容器访问本地主机网络而不暴露任何端口?

时间:2019-10-09 13:38:40

标签: docker networking docker-compose localhost host

上下文

我可以访问本地网络中其他计算机的某些本地主机。例如,其中一个称为pandahost,因此,如果我在浏览器中浏览pandahost,则可以访问它。

目前,我一直在使用docker,并且具有以下Docker-compose.yml:

version: "3"
services: 
  myproject: 
    build: 
      context: .
      dockerfile: Dockerfile-for-my-project-environment
    shm_size: 2gb
    volumes: 
      - "D:/project/myproject1/folder:/myproject1"
      - "D:/project/myproject2:/myproject2"


我使用此docker-compose文件运行服务myproject的多个实例,因此,我不想公开任何端口,以避免端口冲突。

到目前为止,除了我无法从服务容器连接到pandahost 之外,一切对我的都正常。

问题

是否有任何方法可以将服务myproject容器连接到pandahost,而不会暴露任何端口,也不会破坏拥有myproject服务容器的多个实例的可能性?

1 个答案:

答案 0 :(得分:0)

如果您知道容器正在打开的端口,则只需使用以下命令即可获取容器的IP地址:

alias docker_ip_address="docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'"

docker_ip_address $container_ID

或更简单地

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_ID

在这种情况下,建议您使用docker-compose.yml中的container_name块为容器命名,以简化之前的操作。