出现错误
1 | # jps |
原因
这其实不是什么 Bug,而是 Docker 自 1.10 版本开始加入的安全特性。
类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是 Docker 自 1.10 在默认的 seccomp 配置文件中禁用了 ptrace。
这篇文章介绍了整个的缘由以及应对方法:JVM in Docker and PTRACE_ATTACH
解决方案
1、(不推荐)了解即可。
直接关闭 seccomp 配置。用法:docker run --security-opt seccomp:unconfined ...
2、推荐
使用 –cap-add 明确添加指定功能:docker run --cap-add=SYS_PTRACE ...
3、Docker Compose 的支持
前面的 docker-compose.yml 改写后文件内容如下(相同内容部分就不重复贴了):
1 | version: '2' |