docker compose 网络别名不起作用

标签 docker docker-compose

我正在尝试根据 documentation 使用 docker compose 创建主机名别名,但是它似乎不起作用 - nslookup/ping 失败。我做错了什么?

这是 docker-compose.yml

version: "3"
services:

  service1:
    image: alpine:latest
    command: ["sleep", "infinity"]
    networks:
      mynet:
        aliases:
          - service1alias

  service2:
    image: alpine:latest
    command: ["nslookup", "service1alias"]
    networks:
      - mynet
    depends_on:
      - service1

networks:
    mynet:

输出:

~/temp  docker compose up --build
[+] Running 2/0
⠿ Container temp_service1_1  Created
⠿ Container temp_service2_1  Created
Attaching to service1_1, service2_1
service2_1  | Server:       127.0.0.11
service2_1  | Address:  127.0.0.11:53
service2_1  |
service2_1  | ** server can't find service1alias: NXDOMAIN
service2_1  |
service2_1  | ** server can't find service1alias: NXDOMAIN
service2_1  |
service2_1 exited with code 1

当我将命令:[“nslookup”,“service1alias”]更改为命令:[“nslookup”,“service1”](没有别名)时 - 它按预期工作:

~/temp  docker compose up --build
[+] Running 2/0
⠿ Container temp_service1_1  Created
⠿ Container temp_service2_1  Recreated
Attaching to service1_1, service2_1
service2_1  | Server:       127.0.0.11
service2_1  | Address:  127.0.0.11:53
service2_1  |
service2_1  | Non-authoritative answer:
service2_1  | Name: service1
service2_1  | Address: 172.31.0.2
service2_1  |
service2_1  | Non-authoritative answer:
service2_1  | *** Can't find service1: No answer
service2_1  |
service2_1 exited with code 0

主机系统、docker版本、网络详细信息等:

~/temp  sw_vers                                                                                              INT ✘  00:24:24
ProductName:    macOS
ProductVersion: 11.3.1
BuildVersion:   20E241

~/temp  docker --version
Docker version 20.10.6, build 370c289

~/temp  brew info homebrew/cask/docker
docker: 3.3.3,64133 (auto_updates)
https://www.docker.com/products/docker-desktop
/usr/local/Caskroom/docker/3.3.3,64133 (120B)
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/docker.rb
==> Names
Docker Desktop
Docker Community Edition
Docker CE
==> Description
App to build and share containerized applications and microservices
==> Artifacts
Docker.app (App)
==> Analytics
install: 19,099 (30 days), 56,412 (90 days), 211,283 (365 days)

~/temp  docker network inspect temp_mynet
[
    {
        "Name": "temp_mynet",
        "Id": "e346bb39e435812cdcde3ba1ba554f8bca48c46d012ac944ea2e87db8f630cde",
        "Created": "2021-05-21T21:13:07.966393Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.31.0.0/16",
                    "Gateway": "172.31.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "mynet",
            "com.docker.compose.project": "temp",
            "com.docker.compose.version": "1.0-alpha"
        }
    }
] 

最佳答案

好吧,我可以回答自己:看起来像 docker compose 中的错误:“docker compose up --build”失败,而“docker-compose up --build”按预期工作(注意 docker-compose 中的破折号)。

我在审查这个问题时发现了它并注意到 “com.docker.compose.version”:“1.0-alpha”

关于docker compose 网络别名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67644021/

相关文章:

Java SpringBoot : when inside a Docker the liquibase plugin runs with errors and does not execute changelogs

mysql - Docker 上的 Laravel [2002] 连接拒绝端口 3307 上的 Mysql

elasticsearch - 无法访问端口5601上的Docker容器中运行的Kibana

node.js - 在Docker容器中找不到依赖项

Docker swarm - 如何在 swarm 中的每个节点上复制服务

Docker-compose:与 selinux 一起使用

python-3.x - dockerizing 期间无法在 alpine 上安装 pycosat

docker - 在容器的每个构建中运行 composer install 和 npm install

docker - 使用自定义 shell 脚本作为 docker 入口点

docker - 使用 docker-compose 引导 Strapi