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
好吧,我尝试在单个撰写文件中创建一个包含多个 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