docker容器异常退出:exited with code 2

ubuntu使用docker-compose指令创建orderer节点容器,创建后容器自动退出并返回以下信息:

img

docker-compose配置文件如下:

version: '3.7'

volumes:
    orderer0.maintenance.com:
    orderer1.maintenance.com:
    orderer2.maintenance.com:
    peer0.org1.maintenance.com:
    peer1.org1.maintenance.com:
    peer0.org2.maintenance.com:
    peer0.org3.maintenance.com:
    peer0.org4.maintenance.com:

networks:
    machine:

services:
    
    orderer0.maintenance.com:
        container_name: orderer0.maintenance.com
        image: hyperledger/fabric-orderer:latest
        labels:
            service: hyperledger-fabric
        environment:
            - FABRIC_LOGGING_SPEC=INFO
            - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
            - ORDERER_GENERAL_LISTENPORT=7050
            - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
            - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
            
            - ORDERER_GENERAL_TLS_ENABLED=true
            - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_BOOTSTRAPMETHOD=file 
            - ORDERER_GENERAL_BOOtSTRAPFILE=/var/hyperledger/orderer/order.genesis.block
            
            - ORDERER_ADMIN_TLS_ENABLED=true
            - ORDERER_ADMIN_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_ADMIN_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_ADMIN_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric
        command: orderer
        volumes:
            - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/order.genesis.block
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer0.maintenance.com/msp/:/var/hyperledger/orderer/msp
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer0.maintenance.com/tls/:/var/hyperledger/orderer/tls
            - orderer0.maintenance.com:/var/hyperledger/production/orderer
        ports:
            - 7050:7050
        networks:
            - machine
            
    orderer1.maintenance.com:
        container_name: orderer1.maintenance.com
        image: hyperledger/fabric-orderer:latest
        labels:
            service: hyperledger-fabric
        environment:
            - FABRIC_LOGGING_SPEC=INFO
            - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
            - ORDERER_GENERAL_LISTENPORT=7050
            - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
            - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
            
            - ORDERER_GENERAL_TLS_ENABLED=true
            - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_BOOTSTRAPMETHOD=file 
            - ORDERER_GENERAL_BOOtSTRAPFILE=/var/hyperledger/orderer/order.genesis.block
            
            - ORDERER_ADMIN_TLS_ENABLED=true
            - ORDERER_ADMIN_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_ADMIN_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_ADMIN_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric
        command: orderer
        volumes:
            - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/order.genesis.block
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer1.maintenance.com/msp/:/var/hyperledger/orderer/msp
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer1.maintenance.com/tls/:/var/hyperledger/orderer/tls
            - orderer1.maintenance.com:/var/hyperledger/production/orderer
        ports:
            - 8050:8050
        networks:
            - machine
            
    orderer2.maintenance.com:
        container_name: orderer2.maintenance.com
        image: hyperledger/fabric-orderer:latest
        labels:
            service: hyperledger-fabric
        environment:
            - FABRIC_LOGGING_SPEC=INFO
            - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
            - ORDERER_GENERAL_LISTENPORT=7050
            - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
            - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
            
            - ORDERER_GENERAL_TLS_ENABLED=true
            - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            
            - ORDERER_GENERAL_BOOTSTRAPMETHOD=file 
            - ORDERER_GENERAL_BOOtSTRAPFILE=/var/hyperledger/orderer/order.genesis.block
            
            - ORDERER_ADMIN_TLS_ENABLED=true
            - ORDERER_ADMIN_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
            - ORDERER_ADMIN_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
            - ORDERER_ADMIN_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
            - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053
            
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric
        command: orderer
        volumes:
            - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/order.genesis.block
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer2.maintenance.com/msp/:/var/hyperledger/orderer/msp
            - ./crypto-config/ordererOrganizations/maintenance.com/orderers/orderer2.maintenance.com/tls/:/var/hyperledger/orderer/tls
            - orderer2.maintenance.com:/var/hyperledger/production/orderer
        ports:
            - 9050:9050
        networks:
            - machine

后面的peer和cli容器都是正常运行,只有orderer容器会出现这个问题,请问该如何解决?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1094609
  • 这篇博客你也可以参考下:docker-compose 使用及问题解决
  • 除此之外, 这篇博客: Docker概述与基本使用中的 2.10、 docker-compose 安装 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    文档地址 :https://github.com/docker/compose/releases

    https://docs.docker.com/compose/reference/

    compose-file文档:https://docs.docker.com/compose/compose-file/

    [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
     
     [root@localhost ~]# chmod +x /usr/local/bin/docker-compose
    

    使用 docker-compose build 时,建议 build 目录下的文件尽量少,如果过多,会导致 build非常慢,可能是因为会将build所在目录下的所有文件添加到 build 上下文中,当然, 也可以使用 .dockerignore 文件来忽略指定的文件。笔者之前在公司运维的过程中,有些容器目录下存在十多个jar 文件(之前版本的jar文件),删除该容器后重新 docker-compose up -d,在重新 up 之前需要 building ,此过程非常慢,耗费了十多分钟,在网上也没有找到相关的解决方案,后来将该build 目录中的文件删除,只留下 docker-compose 与 Dockerfile 文件,重新构建,不到5秒就构建完成了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

已解决,通过docker logs 指令查看异常退出的容器日志就能明显看到问题所在