1

我尝试通过我的本地网络共享一个容器,以便从同一网络上的另一台机器访问这个容器。我遵循了 tihs教程(“使用 macvlan 设备”部分),并成功共享了一个简单的 Web 容器并从另一台主机访问。

但是我要分享的容器要复杂一点,因为他通过宿主机上的内网与宿主机上的其他容器通信。

我尝试绑定在我的 docker-compose 中创建的现有容器,但我无法访问它。你能帮我吗,或者如果是的话,请告诉我我错在哪里?

这是我的 docker-compose :

version: "2"
services:
  baseimage:
    container_name: baseimage
    image: base
    build:
      context: ./
      dockerfile: Dockerfile.base
  web:
    container_name: web
    image: web
    env_file:
      - .env
      context: ./
      dockerfile: Dockerfile.web
    extra_hosts:
      - dev.api.exemple.com:127.0.0.1
      - dev.admin.exemple.com:127.0.0.1
      - dev.www.exemple.com:127.0.0.1
    ports:
     - 80:80
     - 443:443
    volumes:
     - ./code:/ass
     - /var/run/docker.sock:/var/run/docker.sock
    tty: true
    dns:
      - 8.8.8.8
      - 8.8.4.4
    links:
      - mysql
      - redis
      - elasticsearch
      - baseimage
    networks:
      devbox:
        ipv4_address: 172.20.0.2
  cron:
    container_name: cron
    image: cron
    build:
      context: ./
      dockerfile: Dockerfile.cron
    volumes:
     - ./code:/ass
    tty: true
    dns:
      - 8.8.8.8
      - 8.8.4.4
    links:
      - web:dev.api.exemple.com
      - mysql
      - redis
      - elasticsearch
      - baseimage
    networks:
      devbox:
        ipv4_address: 172.20.0.3
  mysql:
    container_name: mysql
    image: mysql:5.6
    ports:
      - 3306:3306
    networks:
      devbox:
        ipv4_address: 172.20.0.4
  redis:
    container_name: redis
    image: redis:3.2.4
    ports:
      - 6379:6379
    networks:
      devbox:
        ipv4_address: 172.20.0.5
  elasticsearch:
    container_name: elastic
    image: elasticsearch:2.3.4
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - ./es_data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      devbox:
        ipv4_address: 172.20.0.6
  chromedriver:
    container_name: chromedriver
    image: robcherry/docker-chromedriver:latest
    privileged: true
    ports:
      - 4444:4444
    environment:
      - CHROMEDRIVER_WHITELISTED_IPS='172.20.0.2'
      - CHROMEDRIVER_URL_BASE='wd/hub'
      - CHROMEDRIVER_EXTRA_ARGS='--ignore-certificate-errors'
    networks:
      devbox:
        ipv4_address: 172.20.0.7
    links:
      - web:dev.www.exemple.com
networks:
  devbox:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16
          gateway: 172.20.0.1
4

1 回答 1

0

创建一个external网络 将external 网络和devbox网络分配给web。然后,Web 将可以通过external网络公共 IP 地址公开访问,并使用网络与内部服务进行devbox通信。

将尽快发布工作示例

于 2018-10-08T17:26:13.403 回答