docker-compose 后的网络与定义的名称不同?

Network different than defined name after docker-compose?

好吧,我尝试在单个撰写文件中创建一个包含多个 docker 的网络,但是应该创建的网络不存在,即使 docker-compose up 运行良好:

docker 撰写:

networks:
  allsports.test:
    driver: bridge
services:
  allsports.test.nginx:
    build:
      context: ./allsports.test.nginx/
    container_name: allsports.test.nginx
    image: allsports.test.nginx
    networks:
    - allsports.test
    ports:
    - 380:80
    restart: on-failure
  allsports.test.redis:
    build:
      context: ./allsports.test.redis/
    container_name: allsports.test.redis
    image: allsports.test.redis
    networks:
    - allsports.test
    restart: on-failure
version: '3.7'

运行docker-compose up -d之后:

Starting allsports.test.nginx ... done
Starting allsports.test.redis ... done

但是现在我尝试检查网络:sudo docker inspect allsports.app 说网络不存在。 如果我这样做 sudo docker network ls 我也看不到网络。

如果我检查创建的 docker 之一:

sudo docker inspect allsports.test.nginx -f "{{.NetworkSettings.Networks}}"

> map[allsportstest_allsports.test:0xc000604000]

重命名的原因是什么以及(如何)我可以逻辑地找到通过检查撰写文件创建的实际网络?

docker-compose 创建的默认 docker 名称使用 compose 项目名称作为前缀以避免命名冲突。

默认情况下,项目名称是包含您的 docker-compose.yml 的文件夹的名称。您可以通过 COMPOSE_PROJECT_NAME environment variable (in your shell or in a .env file) or with the -p command line option

自定义它

默认 docker 名称的计算方式取决于对象的类型。例如,默认容器名称是根据模式 <projectName>_<serviceIdentifier>_<containerIncrement> 创建的。但是您通常可以在需要时使用自己的自定义名称(就像您在上面的组合文件中所做的那样,通过命名您独特的服务容器)。

对于网络,默认名称是 <projectName>_<networkIdentifier>,正如您在问题中的最后一个检查命令所报告的那样。因此,您绝对可以从文件中的组合项目名称和网络标识符中推断出该名称。

同时,与您的容器一样,您可以使用 network name option 配置您自己的自定义名称,该名称将按原样使用。在那种情况下,您必须自己处理潜在的命名冲突。

networks:
  allsports.test:
    driver: bridge
    name: allports.test