首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用域名从主机网络访问Docker

使用域名从主机网络访问Docker
EN

Stack Overflow用户
提问于 2018-12-11 11:11:32
回答 1查看 4K关注 0票数 2

嘿,伙计们,我有一个码头集装箱A,它的域名附加在主机B上,作为well.....how,我可以通过A的域名访问该容器A,而不是从主机B的本地网络上的计算机C访问B的ip地址或域名。

因此,C -> A( via wwww.cname.url)而不是C -> B( www.bname.url:port) -> A

例如:

下面是一个与服务对接的组合

代码语言:javascript
复制
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

我在网络192.168.1.0/24上有一个dev pc,它可以通过主机IP访问服务容器,并且通常是为特定服务公开的端口。

UPDATE主机可以从网络以外的server.local到达我的网络接口有以下条目

代码语言:javascript
复制
dns-search server.local
dns-domain server.local

码头容器有以下几个

主机名nginx域名server.local

我还需要编辑主机文件还是resolv.conf文件?

主机似乎正在运行avahi服务发现。这会影响什么吗?

我也能

  • 将内部域设置为主机并在子域上设置停靠容器?外部设备如何通过域访问?
  • 将对接容器附加到主机的网络上,从而在192.168.1.0/24中具有一个ip,并且能够被该网络上的设备点击。域会解决它吗?
  • 是否有一个动态的DNS软件,我可以使用它来连接到我,使它不是一个手动的过程。因此,它将检测到服务器并通过域名将传入的请求路由到它?
EN

回答 1

Stack Overflow用户

发布于 2018-12-11 12:45:58

您可以通过配置带有绑定到子域的容器的nginx容器来实现这一点。

因此,例如,主机可以通过域example.com访问,并且您希望在php.example.com上可以访问php容器,您可以使用如下设置:

代码语言:javascript
复制
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绑定的,而nginx又将注册由于请求子域php,所以应该将用户发送到该容器。

我希望这能帮到你,如果你有什么问题,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53722890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档