如何在Docker compose中更改Docker堆栈生成的服务名称
使用以下命令部署此合成文件的堆栈时:如何在Docker compose中更改Docker堆栈生成的服务名称,docker,docker-compose,docker-swarm,docker-stack,Docker,Docker Compose,Docker Swarm,Docker Stack,使用以下命令部署此合成文件的堆栈时: docker stack deploy -c docker-compose.yml myapp service-name: image: service-image namelike-property: my-custom-service-name // here I would like to know the property 生成的服务名称将是myapp\u service-name 我希望它由我的自定义服务名称命名和引用用于服务之
docker stack deploy -c docker-compose.yml myapp
service-name:
image: service-image
namelike-property: my-custom-service-name // here I would like to know the property
生成的服务名称将是myapp\u service-name
我希望它由我的自定义服务名称命名和引用用于服务之间的通信如果两个通信的服务在同一网络中,您可以使用compose文件中定义的服务名称(在您的情况下,您的服务名称是服务名称)
当您执行
docker服务ls
时,stackname将显示在每个服务之前。这样做是因为可能有两个名称相同的服务不在共享网络中。您不能更改它,这样做没有意义,因为该名称并不重要,实际上只是一个ID。但是,您可以更改堆栈的名称以获得${StackNameILike}:${ServiceNameILike}我认为它不受支持(目前)
docker服务
确实支持此功能
#!/bin/bash
SERVICE_NAME=myservice
docker service create \
--name $SERVICE_NAME \
--hostname $SERVICE_NAME \
--network myoverlayattachableswarmscopednetwork \
# IMAGE GOES HERE
我能够登录到一个服务,并用我提供的名称ping同一网络上的另一个服务
比如说
docker exec -it $(docker ps -q -f name=myotherservice) bash
ping myservice
请注意,在使用docker stack up | deploy
时,container\u name
在docker compose.yml
文件中不受支持。我认为您可以使用“container\u name”在yml文件中指定容器的名称。有些人喜欢:
service-name:
image: service-image
container_name: my-custom-service-name
如果您需要通过service registry引用其他服务,则可以使用以下定义
service-name:
image: ....
network:
my-network:
aliases:
- ref-name
看看这些文件,这似乎是不可能的。docker compose具有可以覆盖前缀的项目名称选项,但stack似乎没有类似的内容。我如何更改使用docker compose 3中的服务创建的容器名称?据我所知,您无法更改。具有多个副本和容器名称的服务支持不适合这个世界,我所需要的只是删除将堆栈与服务名称分隔开的下划线(3;);这有可能吗?正如文档中所说:“在swarm模式下部署堆栈时忽略容器名称选项”