docker service replicas仍为0/1

时间:2016-09-02 04:17:19

标签: docker docker-swarm

我在我的Mac上尝试使用1.12的docker swarm。我启动了3个VirtualBox虚拟机,创建了一个3的swarm集群。

docker@redis1:~$ docker node ls 
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
2h1m8equ5w5beetbq3go56ebl    redis3  Ready Active 
8xubu8g7pzjvo34qdtqxeqjlj    redis2  Ready Active Reachable 
cbi0lyekxmp0o09j5hx48u7vm *  redis1  Ready Active Leader

但是,当我创建服务时,我看到没有错误,但副本总是显示0/1:

docker@redis1:~$ docker service create --replicas 1 --name hello ubuntu:latest /bin/bash
76kvrcvnz6kdhsmzmug6jgnjv
docker@redis1:~$ docker service ls
ID            NAME   REPLICAS  IMAGE          COMMAND
76kvrcvnz6kd  hello  0/1       ubuntu:latest  /bin/bash
docker@redis1:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

可能是什么问题?我在哪里寻找原木? 谢谢!

3 个答案:

答案 0 :(得分:26)

问题是你的任务(调用bin / bash)很快就会退出,因为它没有做任何事情。

如果您查看服务的任务,您将看到一个已启动,然后在几秒钟内关闭。然后启动另一个,关闭等等,因为您被要求始终运行一个任务。

BroadcastReceiver receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        String action = intent.getAction();
        if(action.equalsIgnoreCase(ACTION_POWER_CONNECTED))
        {


                if(chargerConnected != null )
                {
                    chargerConnected.setText("Cable Connected");
                }
                if(chargerImage != null )
                {
                    chargerImage.setImageDrawable(getResources().getDrawable(R.drawable.usb));
                }

        }else if(action.equalsIgnoreCase(ACTION_POWER_DISCONNECTED))
        {


                if(chargerConnected != null )
                {
                    chargerConnected.setText("NOT CHARGE");
                }
                if(chargerImage != null )
                {
                    chargerImage.setImageDrawable(getResources().getDrawable(R.drawable.battery_icon));
                }

            try {

                Toast.makeText(context, "Power Cable Disconnected", Toast.LENGTH_SHORT).show();
            }catch (Exception e){e.printStackTrace();}

        }
    }
};

例如,如果您使用docker service ps hello ,则任务将保持运行。

答案 1 :(得分:0)

如果您在撰写文件中指定了绑定到不存在的本地目录的卷,也会发生这种情况。

答案 2 :(得分:0)

就我而言,这些副本无法正常工作,并且显示了Application.WorksheetFunction.VLookup(Me.txt_ruhsat_no.Value, ThisWorkbook.Sheets("HAKEDİŞ").Range("A:BZ"), 51, 0) = Me.txt_metrekare.Value ,因为我之前没有构建它们。

如我所见here,当您使用以下内容发布到swarm0/0您需要先构建它们

因此,我决定执行一个full system prune,并在其旁边进行构建和部署(在这里,我的堆栈称为docker-compose.yml,并且之前没有运行任何服务或容器):

demo

此后,一切都已启动并运行,现在服务副本已成群结队

docker stack rm demo 
docker system prune --all
docker-compose build
docker stack deploy -c ./docker-compose.yml demo

目前,我在开发人员模式下保持副本工作的方式:

  • Angular / CLi应用:

    PS C:\Users\Alejandro\demo> docker service ls
    ID                  NAME                 MODE                REPLICAS            IMAGE               PORTS
    oi0ngcmv0v29        demo_appweb          replicated          2/2                 webapp:1.0          *:80->4200/tcp
    ahuyj0idz5tv        demo_express         replicated          2/2                 backend:1.0         *:3000->3000/tcp
    fll3m9p6qyof        demo_fileinspector   replicated          1/1                 fileinspector:1.0   *:8080->8080/tcp
    
  • NodeJS后端(快速)

    command: >    
      bash -c "npm install && ng serve --host 0.0.0.0 --port 4200"