使用以下代码创建docker服务后
docker service create --name db --network era-networkkk -p 3306:3306 --mount type=bind,source=$(pwd)/data/mysql,destination=/var/lib/mysql schema
以及当我使用
检查服务时docker services ls
显示名称为db
但是当我使用命令
docker ps
容器名称后面有一些随机生成的数字
我该如何解决这个问题?
答案 0 :(得分:0)
我认为行为是绝对有意的。如果将您的集群配置为在单个集群节点上启动同一图像的多个容器,该怎么办?这些容器不能使用相同的名称。因此,容器名称上必须有一个后缀,这样就不会发生名称冲突。您为什么要影响容器的名称?通常,在使用群集时,您是在服务级别而不是容器级别。
答案 1 :(得分:0)
我认为这样做的原因是,当您创建服务时,您不必关心容器名称是什么。通常,当docker处于群集模式时,您将创建服务。在群体模式下,您设置了一个节点集群,我想您只有一个用于开发目的的节点。但是,当您有多个群集时,该服务将创建与--replicas选项指定的一样多的容器。然后,通过该服务,对您应用程序的任何请求都将在群集中的各个容器之间进行负载均衡。
查看docker文档https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/,这可能有助于阐明所有这些工作原理。