我是 Docker 的新手,我正在尝试使用 perf 检查某些东西的性能。 Perf 没有附带我正在使用的图像,所以我去安装它。 我用过
apt-get update
apt-get install perf
这不起作用,因为 perf 是另一个包的一部分。 然后我尝试了
apt-get install -y linux-tools-common linux-tools-generic linux-tools-`uname -r`
结果是
E: Unable to locate package linux-tools-common
E: Unable to locate package linux-tools-generic
E: Unable to locate package linux-tools-3.10.0-862.3.3.el7.x86_64
E: Couldn't find any package by glob 'linux-tools-3.10.0-862.3.3.el7.x86_64'
E: Couldn't find any package by regex 'linux-tools-3.10.0-862.3.3.el7.x86_64'
关于我应该尝试什么有什么建议吗?
最佳答案
我假设您的容器中有一个相当新的 Linux,而主机上有一个旧的。
请注意,perf 必须与您的 Linux 内核的版本完全相同。并且通过容器化,使用主机系统的内核。
当您在容器中安装通用 perf 包时,包管理器会检索(主机)内核的版本并尝试安装具有相同版本的 perf 包。由于容器中的 Linux 发行版更新版本,必要的旧 perf 包不再是其包存储库的一部分,导致您看到的错误消息。
对此有多种解决方案:
a) 将主机 Linux 内核更新为受容器 Linux 发行版支持,
b) 降级容器 Linux 发行版,或者
c) 在容器中提供必要的 perf 包。这可能很棘手,您可能会搞砸容器的包管理器。但它只是一个容器 ;)。您可以使用 uname -a
找出所需的版本。
关于linux 工具包容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974594/