Docker 在EKS中创建OCI运行时失败

Docker 在EKS中创建OCI运行时失败,docker,kubernetes,amazon-eks,Docker,Kubernetes,Amazon Eks,我试图创建一个到EKS的kubernetes部署,但遇到了这个错误 Containers: locust-master: Container ID: docker://abc3a719222289774988bad3b1b1cfcc04c5b37559038aed49d3d00827fcc94c Image: mosesliao/locust:1.3.2 Image ID: docker-pullable://mosesliao/lo

我试图创建一个到EKS的kubernetes部署,但遇到了这个错误

Containers:
  locust-master:
    Container ID:   docker://abc3a719222289774988bad3b1b1cfcc04c5b37559038aed49d3d00827fcc94c
    Image:          mosesliao/locust:1.3.2
    Image ID:       docker-pullable://mosesliao/locust@sha256:74368de2e5cf9e9a679bdb2c371a47cc2aea813e5a697f2282a6b593f179088f
    Ports:          5557/TCP, 5558/TCP, 8089/TCP
    Host Ports:     0/TCP, 0/TCP, 0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       ContainerCannotRun
      Message:      OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/docker-entrypoint.sh\": permission denied": unknown
      Exit Code:    126
      Started:      Tue, 10 Nov 2020 21:33:39 +0800
      Finished:     Tue, 10 Nov 2020 21:33:39 +0800
    Ready:          False
    Restart Count:  2
    Environment:
      LOCUST_MODE:  MASTER
      LOCUST_OPTS:  --print-stats
    Mounts:
      /locust from locust-scripts (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-5v8d6 (ro)
可能是什么问题?这是我的蝗虫档案

FROM locustio/locust

COPY docker-entrypoint.sh /

USER root

RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]

我将尝试列出以下几种可能的解决方案:

  • docker entrypoint.sh
    应与Dockerfile位于同一文件夹中。您需要调整复制路径,例如:

  • 通过Dockerfile设置的权限可能并不总是正确应用。您应该使主机的
    docker entrypoint.sh
    可执行。为此,请运行:
    ls-la path/To/docker entrypoint.sh
    ,检查可执行文件输出的第一列是否将可执行位设置为类似于:
    -rwxr-x
    ,如果不运行:
    chmod+x docker entrypoint.sh

  • 试用


  • 不使用
    chmod
    ,因为它不需要可执行权限


    请记住在进行更改后重建并重新运行。

    这里有一些可能的解决方案,我将尝试列出:

  • docker entrypoint.sh
    应与Dockerfile位于同一文件夹中。您需要调整复制路径,例如:

  • 通过Dockerfile设置的权限可能并不总是正确应用。您应该使主机的
    docker entrypoint.sh
    可执行。为此,请运行:
    ls-la path/To/docker entrypoint.sh
    ,检查可执行文件输出的第一列是否将可执行位设置为类似于:
    -rwxr-x
    ,如果不运行:
    chmod+x docker entrypoint.sh

  • 试用


  • 不使用
    chmod
    ,因为它不需要可执行权限


    请记住在进行更改后重建并重新运行。

    请转到正在构建docker映像的计算机并执行:
    ls-la path/to/docker entrypoint.sh
    ?脚本文件输出的第一列是什么?请转到正在构建docker映像的计算机并执行:
    ls-la path/to/docker entrypoint.sh
    ?脚本文件输出的第一列是什么?
    COPY ./docker-entrypoint.sh /docker-entrypoint.sh
    RUN chmod +x /docker-entrypoint.sh
    ENTRYPOINT ["/docker-entrypoint.sh"] 
    
    ENTRYPOINT ["sh", "/docker-entrypoint.sh"]