linux 工具包容器

标签 linux docker containers perf

我是 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/

相关文章:

python - 将 ast.literal_eval 与 sys.argv 组合

c++ - 如何在 Linux 机器上链接一个静态库文件

Jenkins 中的 Docker 推送 - 拒绝 : requested access to the resource is denied

amazon-web-services - 无法连接到端点 URL : "https://api.ecr-public.xxxxxxxxx.amazonaws.com/"

docker - Dockerfile如何将文件名设置为env

c++ - 如何在 C++ 中创建一个包含不同类型函数指针的容器?

Linux 上的 C : Parse arguments from '<' and '|'

即使使用 -it 运行 Docker 容器也会退出

css - 关键包装问题

linux - 使用 CentOS 使用 Elasticsearch keystore 时出现权限问题?