代码之家  ›  专栏  ›  技术社区  ›  CodeMed

退出代码127和:没有这样的文件或目录`

  •  0
  • CodeMed  · 技术社区  · 6 年前

    下面的容器``正在退出,代码127和消息 ': No such file or directory .

    为了解决此错误,以便容器能够成功运行,需要进行哪些特定的更改?


    码头检查

    以下是 docker ps -a -q 紧随其后 docker inspect 1d86d855a3d1

    C:\projects\docker\crowd\atlassian-crowd-docker>docker ps -a -q
    1d86d855a3d1
    
    C:\projects\docker\crowd\atlassian-crowd-docker>docker inspect 1d86d855a3d1
    [
        {
            "Id": "1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b",
            "Created": "2018-07-25T23:30:58.584251386Z",
            "Path": "/opt/start.sh",
            "Args": [
                "run"
            ],
            "State": {
                "Status": "exited",
                "Running": false,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 0,
                "ExitCode": 127,
                "Error": "",
                "StartedAt": "2018-07-25T23:37:02.200147887Z",
                "FinishedAt": "2018-07-25T23:37:02.192281696Z"
            },
            "Image": "sha256:0176cf7cd57ac2b73eb4a0fc4fb907fcd6ab772a5c5e9b9ce3e45a32e8d66d1d",
            "ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b/resolv.conf",
            "HostnamePath": "/mnt/sda1/var/lib/docker/containers/1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b/hostname",
            "HostsPath": "/mnt/sda1/var/lib/docker/containers/1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b/hosts",
            "LogPath": "/mnt/sda1/var/lib/docker/containers/1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b/1d86d855a3d13d7b9e695cce9490b6f4700c61027287f7383110cf6937d81b3b-json.log",
            "Name": "/practical_kalam",
            "RestartCount": 0,
            "Driver": "aufs",
            "Platform": "linux",
            "MountLabel": "",
            "ProcessLabel": "",
            "AppArmorProfile": "",
            "ExecIDs": null,
            "HostConfig": {
                "Binds": null,
                "ContainerIDFile": "",
                "LogConfig": {
                    "Type": "json-file",
                    "Config": {}
                },
                "NetworkMode": "default",
                "PortBindings": {
                    "8443/tcp": [
                        {
                            "HostIp": "",
                            "HostPort": "8443"
                        }
                    ]
                },
                "RestartPolicy": {
                    "Name": "no",
                    "MaximumRetryCount": 0
                },
                "AutoRemove": false,
                "VolumeDriver": "",
                "VolumesFrom": null,
                "CapAdd": null,
                "CapDrop": null,
                "Dns": [],
                "DnsOptions": [],
                "DnsSearch": [],
                "ExtraHosts": null,
                "GroupAdd": null,
                "IpcMode": "shareable",
                "Cgroup": "",
                "Links": null,
                "OomScoreAdj": 0,
                "PidMode": "",
                "Privileged": false,
                "PublishAllPorts": false,
                "ReadonlyRootfs": false,
                "SecurityOpt": null,
                "UTSMode": "",
                "UsernsMode": "",
                "ShmSize": 67108864,
                "Runtime": "runc",
                "ConsoleSize": [
                    26,
                    107
                ],
                "Isolation": "",
                "CpuShares": 0,
                "Memory": 0,
                "NanoCpus": 0,
                "CgroupParent": "",
                "BlkioWeight": 0,
                "BlkioWeightDevice": [],
                "BlkioDeviceReadBps": null,
                "BlkioDeviceWriteBps": null,
                "BlkioDeviceReadIOps": null,
                "BlkioDeviceWriteIOps": null,
                "CpuPeriod": 0,
                "CpuQuota": 0,
                "CpuRealtimePeriod": 0,
                "CpuRealtimeRuntime": 0,
                "CpusetCpus": "",
                "CpusetMems": "",
                "Devices": [],
                "DeviceCgroupRules": null,
                "DiskQuota": 0,
                "KernelMemory": 0,
                "MemoryReservation": 0,
                "MemorySwap": 0,
                "MemorySwappiness": null,
                "OomKillDisable": false,
                "PidsLimit": 0,
                "Ulimits": null,
                "CpuCount": 0,
                "CpuPercent": 0,
                "IOMaximumIOps": 0,
                "IOMaximumBandwidth": 0
            },
            "GraphDriver": {
                "Data": null,
                "Name": "aufs"
            },
            "Mounts": [],
            "Config": {
                "Hostname": "1d86d855a3d1",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": true,
                "AttachStderr": true,
                "ExposedPorts": {
                    "8080/tcp": {},
                    "8443/tcp": {}
                },
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin",
                    "LANG=C.UTF-8",
                    "JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre",
                    "JAVA_VERSION=8u151",
                    "JAVA_ALPINE_VERSION=8.151.12-r0",
                    "CATALINA_HOME=/usr/local/tomcat",
                    "TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
                    "LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
                    "GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23",
                    "TOMCAT_MAJOR=9",
                    "TOMCAT_VERSION=9.0.2",
                    "TOMCAT_SHA1=b59e1d658a4edbca7a81d12fd6f20203a4da9743",
                    "TOMCAT_TGZ_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz",
                    "TOMCAT_ASC_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz.asc \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz.asc \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz.asc \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz.asc",
                    "CROWD_HOME=/opt/crowd/home",
                    "CROWD_INSTALL=/opt/crowd/webapp",
                    "CROWD_USER=crowd",
                    "CROWD_GROUP=crowd",
                    "CROWD_VERSION=2.12.0",
                    "MYSQL_CONNECTOR_VERSION=5.1.39"
                ],
                "Cmd": [
                    "run"
                ],
                "ArgsEscaped": true,
                "Image": "debian-crowd",
                "Volumes": null,
                "WorkingDir": "/usr/local/tomcat",
                "Entrypoint": [
                    "/opt/start.sh"
                ],
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.vcs-url": "https://github.com/Dwolla/atlassian-crowd-docker"
                }
            },
            "NetworkSettings": {
                "Bridge": "",
                "SandboxID": "7044cebfde1cd851bae7cc5a5034b4af87318ed89062074bf7236e168c422a6a",
                "HairpinMode": false,
                "LinkLocalIPv6Address": "",
                "LinkLocalIPv6PrefixLen": 0,
                "Ports": {},
                "SandboxKey": "/var/run/docker/netns/7044cebfde1c",
                "SecondaryIPAddresses": null,
                "SecondaryIPv6Addresses": null,
                "EndpointID": "",
                "Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAddress": "",
                "IPPrefixLen": 0,
                "IPv6Gateway": "",
                "MacAddress": "",
                "Networks": {
                    "bridge": {
                        "IPAMConfig": null,
                        "Links": null,
                        "Aliases": null,
                        "NetworkID": "bcec3d0b3e8a17638d85d6419deadd4bdd4150659d60358ebb1737e1ac306710",
                        "EndpointID": "",
                        "Gateway": "",
                        "IPAddress": "",
                        "IPPrefixLen": 0,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "",
                        "DriverOpts": null
                    }
                }
            }
        }
    ]
    


    码头工人日志
    C:\projects\docker\crowd\atlassian-crowd-docker>docker logs 1d86d855a3d1
    ': No such file or directory
    ': No such file or directory
    


    文档文件

    Dockerfile看起来像:

    FROM tomcat:9.0-alpine
    MAINTAINER Dwolla Engineering <dev+crowd@dwolla.com>
    
    LABEL org.label-schema.vcs-url="https://github.com/Dwolla/atlassian-crowd-docker"
    
    ENV CROWD_HOME=/opt/crowd/home \
        CROWD_INSTALL=/opt/crowd/webapp \
        CROWD_USER=crowd \
        CROWD_GROUP=crowd \
        CROWD_VERSION=2.12.0 \
        MYSQL_CONNECTOR_VERSION=5.1.39 
    
    EXPOSE 8443
    
    COPY redirector /opt/redirector
    
    RUN apk update && \
        apk add --update curl ca-certificates jq groff less python py-pip bash openssl openjdk8 && \
        curl https://www.digicert.com/CACerts/GTECyberTrustGlobalRoot.crt | openssl x509 -inform der -outform pem -out /usr/local/share/ca-certificates/GTECyberTrustGlobalRoot.crt && \
        update-ca-certificates && \
        rm -rf ${CATALINA_HOME}/webapps/* && \
        mkdir -p ${CROWD_HOME} ${CROWD_INSTALL} ${CATALINA_HOME}/conf/Catalina/localhost && \
        cd /opt && \
        curl -vL -o ${CROWD_INSTALL}/crowd.war https://www.atlassian.com/software/crowd/downloads/binary/atlassian-crowd-${CROWD_VERSION}-war.zip && \
        cd ${CROWD_INSTALL} && unzip -n crowd.war && rm crowd.war && cd - && \
        curl -vL -o /tmp/mysql-connector.tgz https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_CONNECTOR_VERSION}.tar.gz && \
        tar xzf /tmp/mysql-connector.tgz mysql-connector-java-${MYSQL_CONNECTOR_VERSION}/mysql-connector-java-${MYSQL_CONNECTOR_VERSION}-bin.jar && \
        mv mysql-connector-java-5.1.39/mysql-connector-java-${MYSQL_CONNECTOR_VERSION}-bin.jar ${CATALINA_HOME}/lib/mysql-connector-java-${MYSQL_CONNECTOR_VERSION}-bin.jar && \
        pip install --upgrade pip && \
        pip install awscli && \
        sed -i s_securerandom.source=file:/dev/random_securerandom.source=file:/dev/urandom_ $JAVA_HOME/lib/security/java.security && \
        curl -vL "https://dl.bintray.com/sbt/native-packages/sbt/0.13.15/sbt-0.13.15.tgz" | \
        gunzip | tar -x -C /usr/local && \
        cd /opt/redirector && \
        /usr/local/sbt/bin/sbt clean test package && \
        mkdir -p ${CATALINA_HOME}/webapps/ROOT && unzip -d ${CATALINA_HOME}/webapps/ROOT target/scala-2.11/*.war && \
        apk --purge -v del py-pip openjdk8 && \
        rm -rf /var/cache/apk/* /opt/redirector /usr/local/sbt /tmp/* /root/.ivy2/ /root/.sbt/ /root/.cache/ && \
        ls -al /usr/lib/jvm/java-1.8-openjdk/jre
    
    COPY context.xml.tmpl /opt/context.xml.tmpl
    COPY server.xml ${CATALINA_HOME}/conf/server.xml
    COPY crowd.cfg.tmpl /opt/crowd.cfg.tmpl
    COPY start.sh /opt/start.sh
    COPY jars/* ${CATALINA_HOME}/lib/
    
    ENTRYPOINT ["/opt/start.sh"]
    CMD ["run"]  
    


    斯塔什

    start.sh 看起来像:

    #!/usr/bin/env bash
    set -euo pipefail
    IFS=$'\n\t'
    
    aws s3 cp ${DATABASE_CONFIG_OBJECT} ${CROWD_HOME}/crowduser.json
    aws s3 cp ${CROWD_CONFIG_OBJECT} ${CROWD_HOME}/config.json
    
    if aws s3 ls ${CROWD_SECRETS_OBJECT} > /dev/null; then
      aws s3 cp ${CROWD_SECRETS_OBJECT} ${CROWD_HOME}/config_secrets.json
    else
      cat <<__CONFIG_SECRETS_END__ > ${CROWD_HOME}/config_secrets.json
    {
      "application_password": ""
    }
    __CONFIG_SECRETS_END__
    fi
    
    # Set up JNDI resources in Tomcat root context
    tmpl=$(cat /opt/context.xml.tmpl | sed 's_"_\\"_g')
    printf "\"%s\"" "$tmpl" | jq -r -f /dev/stdin ${CROWD_HOME}/crowduser.json > ${CATALINA_HOME}/conf/Catalina/localhost/crowd.xml
    
    tmpl=$(cat /opt/crowd.cfg.tmpl | sed 's_"_\\"_g')
    printf "\"%s\"" "$tmpl" | jq -r -f /dev/stdin ${CROWD_HOME}/config.json > ${CROWD_HOME}/crowd.cfg.xml
    
    cat <<__PROPERTIES_END__ | xargs -0 printf "\"%s\"" | jq -r -f /dev/stdin ${CROWD_HOME}/config_secrets.json > ${CROWD_HOME}/crowd.properties
    session.lastvalidation=session.lastvalidation
    session.tokenkey=session.tokenkey
    crowd.server.url=https\\\://localhost:8443/crowd/services/
    application.login.url=https\\\://${CROWD_SERVER_URL}/crowd
    crowd.base.url=https\\\://${CROWD_SERVER_URL}/crowd/
    application.name=crowd
    http.timeout=30000
    session.isauthenticated=session.isauthenticated
    session.validationinterval=0
    application.password=\(.application_password)
    __PROPERTIES_END__
    
    cat <<__CROWD_INIT_END__ > ${CROWD_INSTALL}/WEB-INF/classes/crowd-init.properties
    crowd.home=${CROWD_HOME}
    __CROWD_INIT_END__
    
    openssl req -x509 \
        -newkey rsa:4096 \
        -keyout ${CATALINA_HOME}/conf/localhost-rsa-key.pem \
        -out ${CATALINA_HOME}/conf/localhost-rsa-cert.pem \
        -days 365 \
        -nodes \
        -subj "${CROWD_TLS_SUBJ}"
    
    keytool -import \
        -alias crowd \
        -file $CATALINA_HOME/conf/localhost-rsa-cert.pem \
        -keystore $JAVA_HOME/lib/security/cacerts \
        -storepass changeit \
        -noprompt
    
    exec ${CATALINA_HOME}/bin/catalina.sh $@
    


    查尔斯达菲的建议

    将@charlesduffy建议的打印错误更改为stderr的结果如下:

    C:\projects\docker\crowd\atlassian-crowd-docker>docker run -p 8443:8443 mycrowd  
    + PS4=':$BASH_SOURCE:$LINENO+'  
    :/opt/start.sh:2+set -x  
    :/opt/start.sh:2+$':\r'  
    /opt/start.sh: line 2: $':\r': command not found  
    :/opt/start.sh:3+set -euo $'pipefail\r'  
    : invalid option name: set: pipefail  
    

    下一次迭代的结果是:

    C:\projects\docker\crowd\atlassian-crowd-docker>docker run -p 8443:8443 mycrowd
    + PS4=':$BASH_SOURCE:$LINENO+'
    :/opt/start.sh:2+set -x
    :/opt/start.sh:2+:
    :/opt/start.sh:3+set -euo pipefail
    :/opt/start.sh:4+IFS='
        '
    /opt/start.sh: line 6: DATABASE_CONFIG_OBJECT: unbound variable
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Charles Duffy    6 年前

    start.sh 显然包含DOS换行符。添加新命令:

    RUN dos2unix /opt/start.sh
    

    …之后 COPY .


    为了使诊断更容易,您可以使用shell xtrace 登录中。引用对该问题的评论:

    注释出 ENTRYPOINT 并且改变 CMD CMD ["/bin/bash", "-x", "/opt/start.sh", "run"] . 日志将位于stderr上。