Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker compose中更改Docker堆栈生成的服务名称_Docker_Docker Compose_Docker Swarm_Docker Stack - Fatal编程技术网

如何在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模式下部署堆栈时忽略容器名称选项”