在以Swarm模式使用docker创建服务时,我观察到swarm的奇怪行为。
基本上,我从具有绑定安装的私有注册表创建服务:
docker service create --mount type=bind,src=/some/shared/filesystem/mod_tile,dst=/osm/mod_tile,ro --name="mod_tile" --publish 8082:80 --replicas 3 --with-registry-auth my-registry:5050/repo1/mod_tile
这很顺利...并且我的服务可以按我期望的方式复制...
但是当我在管理器上执行 docker ps 时,我看到了我期望的容器以及一个意外的第二个容器,它们从同一图像运行,并使用不同的名称:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ca33d my-registry:5050/mod_tile:latest "apachectl -D FOREGRâ¦" About a minute ago Up About a minute vigilant_kare.1.fn5u
619e7 my-registry:5050/mod_tile:latest "apachectl -D FOREGRâ¦" 3 minutes ago Up 3 minutes mod_tile.3.dyismrc
4f1ebf demo/demo-tomcat:0.0.1 "./entrypoint.sh" 7 days ago Up 7 days (healthy) 9900/tcp, 0.0.0.0:8083->8080/tcp tomcatgeoserver
d3adf some.repo:5000/manomarks/visualizer:latest "npm start" 8 days ago Up 8 days 8080/tcp supervision_visualizer.1.ok27kbz
673c1 some.repo:5000/grafana/grafana:latest "/run.sh" 8 days ago Up 8 days 3000/tcp supervision_grafana.1.pgqko8 some.repo:5000/portainer:latest "/portainer --externâ¦" 8 days ago Up 8 days 9000/tcp supervision_portainer.1.vi90w6
bd9b1 some.repo:5000/prom/prometheus:latest "/bin/prometheus -coâ¦" 8 days ago Up 8 days 9090/tcp supervision_prometheus.1.j4gyn02
d8a8b some.repo:5000/cadvisor:0.25.0 "/usr/bin/cadvisor -â¦" 8 days ago Up 8 days 8080/tcp supervision_cadvisor.om7km
bd46d some.repo:5000/prom/node-exporter:latest "/bin/node_exporter â¦" 8 days ago Up 8 days 9100/tcp supervision_nodeexporter.om7kmd
04b53 some.repo:5000/sonatype/nexus3 "sh -c ${SONATYPE_DIâ¦" 9 days ago Up 2 hours 0.0.0.0:5050->5050/tcp, 0.0.0.0:8081->8081/tcp nexus_registry
起初,我认为它是先前尝试中的剩余容器,所以我将其停止了……但是几秒钟后,它又恢复了!无论我停了多少次,它都会重新启动。
所以,我想它是故意存在的...但是我不明白:我已经在运行我的3个副本(我在所有节点上都进行了检查),即使我升级了另一个节点,额外的容器也只会出现在领导上...
这可能来自我的另一个容器(用于监视),但是到目前为止,我仍无法弄清是哪个容器...
有人知道为什么要创建这个额外的容器吗?
编辑05/07
这是mod_tile服务上的docker ps的结果。这里有3个副本,每个节点一个。 “ ps”命令不考虑额外的服务。
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
c77gc mod_tile.1 my-registry:5050/mod_tile:latest VM3 Running Running 15 hours ago
u7465 mod_tile.2 my-registry:5050/mod_tile:latest VM4 Running Running 15 hours ago
dyism mod_tile.3 my-registry:5050/mod_tile:latest VM2 Running Running 15 hours ago
答案 0 :(得分:1)
您似乎已经定义了第二个服务,其名称为“ vigilant_kare”,如果您未提供名称,则可能会自动命名。
群集模式将自动更正一个已关闭或已删除的容器,以使您返回目标状态。要删除由群集模式管理的容器,您需要删除对其进行管理的服务:
docker service rm vigilant_kare