无法使用自定义 seccomp 配置文件启动 docker 容器

Unable to launch docker container with custom seccomp profile

无法使用 JSON 启动带有自定义 seccomp 配置文件的 docker 容器。出现以下错误。

sudo docker run --name=alpin1effcon1t -it 453135d09376 --security-opt seccomp:chrome.json
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "--security-opt": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container: context canceled

我们已经在各种 docker 平台上进行了尝试,例如 Docker Desktop-WSL、Docker playgrounds 和基于 Amazon Linux 的 EC2。同样的错误。

Docker 关于 EC2 的信息

grep SECCOMP /boot/config-$(uname -r)
CONFIG_HAVE_ARCH_SECCOMP=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
CONFIG_SECCOMP_FILTER=y

Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.75-79.358.amzn2.x86_64
 Operating System: Amazon Linux 2

docker run 的正确语法是:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

这意味着在图像 name/id 之后,您可以使用要在容器启动后执行的参数指定命令。换句话说,您覆盖了 Dockerfile.

中指定的 CMD

在您的示例中,您告诉 docker 在容器启动时执行 --security-opt seccomp:chrome.json--security-opt seccomp:chrome.json 不是正确的 linux 命令(在 $PATH.

的目录中找不到

话虽如此,您应该做的是交换 --security-opt 和图像 ID 的顺序。因为 --security-opt 是一个 docker run 选项。

sudo docker run --name=alpin1effcon1t -it --security-opt seccomp:chrome.json 453135d09376