当前位置: 首页 > 知识库问答 >
问题:

docker-撰写外部链接无法连接

冀崇凛
2023-03-14

我有几个应用程序容器,我想连接到 mongodb 容器。我尝试了external_links但我无法连接到mongodb。

我得到

MongoError:第一次连接时无法连接到服务器[mongodb:27017]

我必须将容器添加到同一个网络中才能让external_links工作吗?

MongoDB:

version: '2'
services:
  mongodb:
    image: mongo:3.4
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - data:/data/db
volumes:
  data:

应用程序:

version: '2'
services:
  app-dev:
    restart: Always
    build: repository/
    ports:
      - "3000:80"
    env_file:
      - ./environment.env
    external_links:
      - mongodb_mongodb_1:mongodb

网络:

# sudo docker network ls
NETWORK ID          NAME                      DRIVER              SCOPE
29f8bae3e136        bridge                    bridge              local
67d5519cb2e6        dev_default               bridge              local
9e7097c844cf        host                      host                local
481ee4301f7c        mongodb_default           bridge              local
4275508449f6        none                      null                local
873a46298cd9        prod_default              bridge              local

共有3个答案

那昊
2023-03-14

最近,我遇到了名称解析失败,尝试链接由docker-compose v3处理的2个容器,这些容器代表gRPC服务器和客户端,但在我的情况下,失败并且external_links

我可能会重复这里发布的一些信息,但会尝试总结一下,因为所有这些都帮助我解决了这个问题。

external_links文档(如前面的回答所述):

如果使用版本 2 或更高版本的文件格式,则外部创建的容器必须至少连接到一个与链接到它们的服务相同的网络。

以下配置解决了该问题。

version: '3'
services:
    app:
        networks:
            - some-network
networks:
    some-network:

服务器容器按预期配置。

services:
    app:
        external_links:
            # Assigning easy alias to the target container
            - project-grpc-server_app_1:server
        networks:
            # Mentioning current container as a part of target network
            - project-grpc-server_some-network
networks:
    # Announcing target network (where server resides)
    project-grpc-server_some-network:
        # Telling that announced network already exists (shouldn't be created but used)
        external: true

使用默认值(未配置container_name)时,配置客户端容器的诀窍在于前缀。在我的情况下,网络名称在使用docker-compose时具有前缀项目-grpc-server_,并且名称本身是某个网络项目-grpc-server_some-网络)。因此,在处理单独的生成时,应传递完全限定的网络名称。

虽然容器名称很明显,因为它不时出现在屏幕上,但当第一次面对Docker的这一部分时,很难猜到完整的网络名称,除非Docker network ls

我不是Docker专家,所以请不要太严格地判断,如果这一切在Docker世界中是显而易见的和必要的。

欧阳山
2023-03-14

Yuva对第二版的回答同样适用于第三版。

external_links的文档不够清晰。

为了更清晰,我粘贴了带有注释的版本3变体

version: '3'

services:
  app:
    image: training/webapp
    networks:
      - <<network created by other compose file>>
    external_links:
      - postgres:postgres

networks:
  <<network created by other compose file>>:
    external: true
麻阳
2023-03-14

https://docs.docker.com/compose/compose-file/#/externallinks 的文档说

If you’re using the version 2 file format, the externally-created containers must be connected to at least one of the same networks as the service which is linking to them.

前任:

创建一个新的docker网络

docker网络创建-d桥自定义

Docker-compose-1.yml

    version: '2'

    services:
      postgres:
        image: postgres:latest
        ports:
          - 5432:5432
        networks:
          - custom

    networks:
      custom:
        external: true

Docker-compose-2.yml

    version: '2'

    services:
      app:
        image: training/webapp
        networks:
          - custom
        external_links:
          - postgres:postgres

    networks:
      custom:
        external: true
 类似资料:
  • 我想把9093暴露在码头集装箱外面。当我如下设置暴露于9093的kafka-0端口和KAFKA_ADVERTISED_LISTENERS时,我无法连接到localhost:9093,如以下docker-compose文件所示。 但是,当我换成 和 我可以连接到Kafka经纪人localhost:9092。 如何将外部端口更改为9093以使应用程序连接?我想设置多个经纪商。

  • 问题内容: 我正在运行一个简单的rest应用程序,并在docker容器/ docker-compose中运行。我相信,必须使用Spring Boot才能访问。但是,它会引发错误: 我的代码在这里。 问题答案: 由于在链接中使用别名,因此必须使用与别名相同的主机名来访问容器。因此,您可以执行以下一项操作, 在您的Spring Boot应用程序中使用http:// localhost:6379 而不是

  • 我已经为oracle 19c创建了一个映像。我已使用以下命令启动容器。 创建容器后,我可以登录容器。我能够在容器内连接以下命令。 sqlplus系统/password1@172.17.0.2:1527/ORCLCDB 在容器外部,通过cmd,我无法连接到该oracle实例。 注意:我已经在windows计算机上的端口1521(默认端口)安装了oracle。 listener.ora 特斯奈姆斯·奥

  • 我按照这里给出的步骤从外部Jenkins实例连接到openshift在线代理。然而,当我提供OpenShift凭据时,即使我似乎拥有正确的凭据,登录也无法通过。消息“无法请求https://openshift.redhat.com/broker/rest/domains:OpenShift Online(下一代)开发者预览版在这里!我们不会接受OpenShift Online(v2)平台上的新用户

  • 外部链接 关键参数 报告 method metrics(指标, 数据单位) 其他参数 外部链接 source/link/a pv_count (浏览量(PV)) pv_ratio (浏览量占比,%) visit_count (访问次数) visitor_count (访客数(UV)) new_visitor_count (新访客数) new_visitor_ratio (新访客比率,%) ip_c

  • 问题内容: 使用以下文件: 上面文件中的服务启动了卷容器,该卷容器在Docker主机的文件夹中创建了匿名卷,并在卷容器()中创建了挂载点。 服务中的指令是否在容器中创建安装点?这点挂载点的容器? 问题答案: 从 文档: 从另一个服务或容器挂载所有卷… 所以简短的答案 是 : 在服务内部 装入由服务定义的卷。 长答案: 要回答您的问题,让我们运行该服务: 在回答您的问题之前,让我们确保描述清楚: 上