Доступ к Docker из хост-сети с использованием доменного имени - PullRequest
0 голосов
/ 11 декабря 2018

Эй, ребята, у меня есть докер-контейнер A с доменным именем, присоединенным к нему на хосте B, к которому также прикреплено доменное имя ..... как я могу получить доступ к указанному контейнеру A через доменное имя A, а неIP-адрес B или имя домена с компьютера C в локальной сети хоста B.

, таким образом, C -> A( via wwww.cname.url), а не C -> B( www.bname.url:port) -> A

EG

Следующее является докером-создать со службами

version: "3.2"
services:
  php:
    links:
      - mysql
    image: arm32v6/php:7.1.24-fpm-alpine3.8-lavalite
    networks:
      - backend
    working_dir: /var/www/html
    volumes:
      - ./website/:/var/www/html/
    privileged: true
  node:
    domainname: docker.local
    hostname: node
    networks:
      frontend:
        aliases:
          - node.docker.local
    links:
      - "apache:dev.docker.local"
    depends_on:
      - apache
    image: arm32v7/node:latest
    entrypoint: yarn
    command: twill-dev
    volumes:
      - ./website:/usr/src/app
    working_dir: /usr/src/app
    ports:
      - "3000:3000"
      - "3001:3001"
  apache:
    domainname: docker.local
    hostname: dev
    image: arm32v7/httpd:2.4
    depends_on:
      - php
      - mysql
    networks:
      frontend:
        aliases:
          - apache
          - dev.docker.local
      backend:
        aliases:
          - apache
    privileged: true
    ports:
      - "8880:80"
    working_dir: /var/www/html
    volumes:
      - ./website/:/var/www/html/
      - ./httpd.conf:/usr/local/apache2/conf/httpd.conf
      - ./fpm.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf
  mysql:
    image: yobasystems/alpine-mariadb:arm32v7
    volumes:
      - ./datadir:/var/lib/mysql
    networks:
      - backend
    environment:
      - MYSQL_VERSION=5.7
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_USER=test
      - MYSQL_PASSWORD=testpass
      - MYSQL_DATABASE=test_db
networks:
  frontend:
    external:
      name: localnet
  backend:

Я хочу иметь возможность доступа к службе apache по его доменному имени, установленному в dev.docker.local ip которого являетсяв сети 17.18.0.1/24

У хоста есть IP-адрес, который находится в сети 192.168.1.0/24 с именем домена dev.server.local

У меня есть устройство devсеть 192.168.1.0/24, и она может обращаться к контейнерам служб через IP-адрес хоста и обычно порт, предоставляемый для конкретной службы.

ОБНОВЛЕНИЕ Доступ к хосту возможен по адресу server.localиз-за пределов сети мой сетевой интерфейс имеет следующие записи

dns-search server.local
dns-domain server.local

контейнер докера имеет следующий

имя хоста nginx имя_домена server.local

мне нужно также отредактировать файл хоста или файл resolv.conf?

Кажется, на хосте запущено обнаружение службы avahi.Повлияет ли это на что-нибудь?

Так могу ли я

  • установить внутренний домен в качестве хоста и иметь док-контейнеры на поддоменах?Как внешние устройства будут получать доступ к этому через домен?
  • присоединяет контейнер докера к сети хоста, таким образом, имея IP в 192.168.1.0/24 и имея возможность пинговать устройства в этой сети.,Будет ли домен разрешен к нему?
  • Есть ли динамическое программное обеспечение DNS, которое я могу использовать, чтобы подключить его ко мне, чтобы это не было ручным процессом.Таким образом он обнаружит сервер и направит на него входящие запросы через доменное имя?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете сделать это, настроив контейнер nginx с контейнерами, привязанными к поддомену.

Так, например, хост доступен доменом example.com, и вы хотите, чтобы контейнер php был доступен на php.example.com вы можете использовать настройку, подобную следующей:

services:
  php:
    image: arm32v6/php:7.1.24-fpm-alpine3.8-lavalite
    environment:
      - VIRTUAL_HOST=php.example.com
  nginx-proxy:
    image: jwilder/nginx-proxy
    depends_on:
      - php
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

Любой запрос к поддомену сначала будет отправлен на хост, это связано с nginx, который, в свою очередь, регистрирует это, потому что поддомен php являетсяпросил, чтобы он отправил пользователя в этот контейнер.

Я надеюсь, что это может помочь вам, и если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...