Rancher运行需要互联网访问的APP

时间:2017-10-24 09:17:39

标签: docker docker-compose rancher

Rancher v 1.6.10,Docker v 17.06.2-ce

我正在通过Rancher UI部署堆栈,其中包含一个docker容器,其中包含一个通过Internet连接到Dropbox的应用程序。但该应用程序无法访问互联网。

但是,如果我不使用牧场主并且只是使用原生的docker-compose,那么一切正常。

Rancher创建的网络似乎是我猜的问题。

我可以被告知吗?

我的码头撰写文件:

version: '2'
services:
  elasticsearch1:
      image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3
      container_name: es1
      environment:
        - cluster.name=idc-cluster
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        - xpack.security.enabled=false
      ulimits:
        memlock:
          soft: -1
          hard: -1
      mem_limit: 1g
      volumes:
        - esdata1:/usr/share/elasticsearch/data
      ports:
        - 9200:9200
      networks:
        - docker-elk
  idcdb:
    image: postgres:9.6
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=DriveMe
      - POSTGRES_USER=idc
      - POSTGRES_DB=idc
    volumes:
      - pgdata:/var/lib/db
  idcredis:
    image: redis:4.0
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - '6379:6379'
    volumes:
      - redisdata:/var/lib/redis
  booking-service:
      environment:
       - PORT=8085
       - PROFILE=integration
      ports:
       - 8085:8085
      image: idc/idc-booking-service
      depends_on:
        - idcdb
        - idcredis
  notification-service:
        environment:
         - PORT=8087
         - PROFILE=integration
        ports:
         - 8087:8087
        image: idc/idc-notification-service
        depends_on:
          - idcredis
  analytics-service:
        environment:
         - PORT=8088
         - PROFILE=integration
        ports:
         - 8088:8088
        image: idc/idc-analytics-service
        depends_on:
          - idcredis
          - elasticsearch1
  kibana:
    image: docker.elastic.co/kibana/kibana:5.6.3
    environment:
          - "ELASTICSEARCH_URL=http://elasticsearch1:9200"
    networks:
          - docker-elk
volumes:
  pgdata: {}
  redisdata: {}
  esdata1:
    driver: local

networks:
    docker-elk:
      driver: bridge

2 个答案:

答案 0 :(得分:0)

您应该在启动docker时指定网络

--net=host 

如果这不能解决您的问题

sudo gedit /etc/NetworkManager/NetworkManager.conf
comment out the following line:

#dns=dnsmasq

然后

sudo restart network-manager

答案 1 :(得分:0)

您可以使用Rancher LB并将其添加到您的应用中,如下所示:

  1. 在应用程序所在的堆栈中,您必须单击添加服务按钮并选择添加负载均衡器
  2. 然后确保将 Access 设置为Public
  3. 的位置
  4. 在请求主机中,您必须添加所需的URL,例如:mylocal.dev
  5. 然后你必须添加端口80,以便可以从端口80上的外部世界访问它
  6. 选择您希望LB申请的服务和内部应用程序端口。
  7. 那就是全部:)现在你应该可以从外面的世界连接到mylocal.dev。