好吧,我尝试在一个撰写文件中创建一个由多个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
,也看不到网络。
如果我检查创建的码头工人之一:
sudo docker inspect allsports.test.nginx -f "{{.NetworkSettings.Networks}}"
> map[allsportstest_allsports.test:0xc000604000]
是什么原因导致重命名?我如何(逻辑上)找到通过检查撰写文件创建的实际网络?
答案 0 :(得分:0)
由docker
创建的默认docker-compose
名称使用组合项目名称作为前缀,以避免命名冲突。
默认情况下,项目名称是包含您的docker-compose.yml
的文件夹的名称。您可以通过COMPOSE_PROJECT_NAME
environment variable(在您的Shell或.env
文件中)或使用-p
command line option
默认docker
名称的计算方式取决于对象的类型。例如,默认容器名称是根据模式<projectName>_<serviceIdentifier>_<containerIncrement>
创建的。但是您通常可以在需要时使用自己的自定义名称(就像在上面的compose文件中通过命名唯一的服务容器一样)。
对于网络,默认名称为<projectName>_<networkIdentifier>
,由您问题中的上一个检查命令报告。因此,您绝对可以从文件中的撰写项目名称和网络标识符推断出该名称。
同时,与容器一样,您可以使用network name
option来配置自己的自定义名称,该名称将照原样使用。在这种情况下,您必须自己处理潜在的命名冲突。
networks:
allsports.test:
driver: bridge
name: allports.test