Docker堆栈部署无法将服务部署到群集集群中的其他节点

时间:2020-01-28 11:33:20

标签: docker docker-compose dockerfile docker-swarm docker-stack

我正在尝试在多个实例上部署应用程序。在主节点上。部署应用程序后运行唯一的主节点。无法在docker swarm集群中部署服务其他节点。 这是我的docker-compose文件

version: "3"

services:

  mydb:
    image: localhost:5000/mydb-1
    environment:
      TZ: "Asia/Colombo"
    ports:
      - 9042:9042
    volumes:
      - /root/data/cdb:/var/lib/cassandra
      - /root/logs/cdb:/var/log/cassandra

命令docker service scale mydb-1_mydb=5

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                                 NAMES
7fxxxxxxxx7        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 5 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.2.q77i258vn2xynlgein9s7tdpb
34fcxxxx14bd        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 4 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.1.s2mzitj8yzb0zo7spd3dmpo1j
9axxxx1efb        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 8 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.3.zgyev3p4qdg7hf7h67oeedutr
f14xxxee59        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 2 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.4.r0themodonzzr1izdbnppd5bi
e3xxx16d        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 6  seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.5.bdebi4

全部只运行主节点。有人知道这个问题吗?

2 个答案:

答案 0 :(得分:0)

您的图像似乎是在本地构建的,其名称无法在其他节点(localhost:5000/mydb-1)中解析。在群集中,应将映像推送到注册表,并且所有节点都必须可以访问该注册表。您可以在自己的节点上运行自己的注册表服务,这里有一个docker image,或者可以推送到docker hub。如果注册表是私有的,则还需要在运行堆栈部署的节点上执行docker login,并在该部署中包含注册表凭据,例如

docker stack deploy -c compose.yml --with-registry-auth stack-name

答案 1 :(得分:0)

谢谢。我找到了问题并解决了。

volumes:
      - /root/data/cdb:/var/lib/cassandra
      - /root/logs/cdb:/var/log/cassandra

如果您将主机路径绑定安装到服务的容器中,则该路径必须存在于每个群集节点上。

docker service scale zkr_zkr=2

运行我的节点的扩展服务之后

root@beta-node-1:~# docker ps
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                    NAMES
f9bxxx15861        localhost:5000/zookeeper:latest   "/docker-entrypoint.…"   40 minutes ago      Up 40 minutes       2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp   zkr_zkr.3.qpr8qp5y
01dxxxx64bc        localhost:5000/zookeeper:latest   "/docker-entrypoint.…"   40 minutes ago      Up 40 minutes       2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp   zkr_zkr.1.g2uee5j