Предоставить доступ к контейнеру Docker через локальную сеть и доступ к нему с другого хоста - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь открыть общий доступ к контейнеру через локальную сеть, чтобы получить доступ к этому контейнеру с другого компьютера в той же сети.Я следовал tihs tutorial (раздел «С устройствами macvlan») и мне удалось открыть общий веб-контейнер и получить доступ с другого хоста.

Но контейнер, которым я хочу поделиться,немного сложнее, потому что он взаимодействует с другими контейнерами на хосте через внутреннюю сеть на хосте.

Я пытаюсь связать свой существующий контейнер, созданный в моем 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

1 Ответ

0 голосов
/ 08 октября 2018

Создайте external сеть, назначьте external сеть и devbox сеть на web.Интернет будет общедоступным через общедоступный IP-адрес сети external и будет взаимодействовать с внутренними службами с использованием сети devbox.

Будет опубликован рабочий пример как можно скорее

...