Docker Compose 主机名 DNS 查找失败

标签 docker networking docker-compose localhost

我有一个简单的 Docker 组合文件,如下所示:

version: '3'
services:
  server:
     build: ./server
     networks:
        - common
     ports:
        - "4840:4840"
     container_name: open62541_server
     hostname: open62541-server
  client:
    build: ./client
    depends_on:
       - server
    container_name: open62541_client
    networks:
        - common

networks:
    common:

当我运行它时,出现以下错误:

Attaching to open62541_server, open62541_client
open62541_server | [2019-06-27 12:19:54.864 (UTC+0000)] info/network    TCP network layer listening on opc.tcp://open62541-server:4840/
open62541_client | [2019-06-27 12:19:55.590 (UTC+0000)] warn/network    DNS lookup of open62541-server failed with error Name or service not known
open62541_client exited with code 0

即使在指定容器属于公共(public)网络之后,为什么我仍会收到此错误?有什么我想念的吗?

最佳答案

您应该使用 server(服务名称)作为您在 docker-compose 网络中连接的主机,而不是 open62541-server 作为 docker 文件中的 container_name 和 hostname 部分影响 docker-compose 的内部 DNS。

关于Docker Compose 主机名 DNS 查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56790952/

相关文章:

docker - GOGS Docker容器是否运行SSH守护程序?

python - 在 Docker 中运行应用程序时发现 ModuleNotFound

mysql - 如何在dockerfile中还原MySQL数据库

Java 和 IP - 子网解析

linux - 路由会影响具有绑定(bind)源地址的套接字吗?

docker-compose 端口映射给出无法创建端点 hnsCall 在 Win32 中失败 : The specified port already exists

mongodb - 重新创建 MongoDB 容器不会重新运行 docker-entrypoint-initdb.d 中的 config.js 文件

java - 无法使用 Java API 连接到在本地虚拟机上运行的 ElasticSearch Docker 集群

python - python多个客户端聊天不起作用

docker - 将 Docker 命令添加到我的 Docker 容器中