首页 > 解决方案 > 从容器访问本地主机网络而不暴露任何端口?

问题描述

语境

我可以访问本地网络中其他计算机的一些本地主机。例如,其中之一被称为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服务容器实例的可能性?

标签: dockernetworkingdocker-composelocalhosthost

解决方案


如果您知道容器打开的端口,您可以使用以下命令简单地获取容器的 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

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


推荐阅读