/bin/sh:应用:未找到

/bin/sh: app: not found

/ # which chasquid-util
/usr/local/bin/chasquid-util
/ # chasquid-util
/bin/sh: chasquid-util: not found
/ # /usr/local/bin/chasquid-util
/bin/sh: /usr/local/bin/chasquid-util: not found
/ # ls -al /usr/local/bin/
total 27432
drwxr-xr-x    1 root     root          4096 Jul 26 16:18 .
drwxr-xr-x    1 root     root          4096 Jul 26 16:18 ..
-rwxr-xr-x    1 root     root      11721005 Jul 26 16:18 chasquid
-rwxr-xr-x    1 root     root       5510494 Jul 26 16:18 chasquid-util
-rwxr-xr-x    1 root     root       2910713 Jul 26 16:18 mda-lmtp
-rwxr-xr-x    1 root     root       4767277 Jul 26 16:18 smtp-check
-rwxr-xr-x    1 root     root       3164845 Jul 26 16:18 spf-check
/ # 

鉴于您的上下文,这通常意味着您缺少共享库。对于 alpine,它通常是 glibc,因为它们附带了 libmusl。您可以通过以下方式检查:

ldd chasquid-util

我在 DC 2018 slidedeck 中列出了其他几个原因:

  • 你 运行 是预期的命令吗? (例如 docker run --rm my_image -it echo hello world 将 运行 命令 -it

  • docker 是否试图 运行 一个 json 字符串? (任何 json 配对错误将显示为将 json 作为字符串执行)

  • 文件是否存在...在路径和容器内? (不能 运行 在不将其构建到图像或安装卷的情况下从容器中的主机中获取内容)

  • 如果是shell脚本,检查第一行(例如#!/bin/bash

  • 检查 linux shell 脚本中的 windows 换行符(使用不同的编辑器查找 ^M\r

  • 如果是二进制文件,可能是缺少库(使用ldd检查)