Docker组成的容器访问LAN

时间:2019-03-19 20:36:23

标签: docker docker-compose docker-networking

假设我在docker-compose中有2个服务:

version: "2.4"

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres

initializer在为此docker-compose文件创建的网络中使用postgres主机名访问"postgres",但现在我希望initializer也可以与LAN中的某些主机交互, initializer现在无法访问(所有请求都超时)。

我尝试在两个容器上以及仅在network-mode: bridge上使用initializer,并且可以进行LAN访问,但是在这些情况下initializer无法访问postgres

如何通过postgres容器访问LAN和initializer容器?

1 个答案:

答案 0 :(得分:1)

解决方案是向initializer服务中添加另一个网络,而不要覆盖默认网络。清楚的代码:

version: "2.4"

networks:
  lan_access:
    driver: bridge

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres
    networks:
      - lan_access
      - default