gpt4 book ai didi

Docker Alpine 和 perf 在 docker 容器中相处不融洽

转载 作者:行者123 更新时间:2023-12-02 18:02:04 25 4
gpt4 key购买 nike

第一件事:

  • Alpine 版本 3.9.0
  • 性能[来自:http://dl-cdn.alpinelinux.org/alpine/edge/testing] 4.18.13
  • Docker 18.09.3 构建 774a1f4

  • 我的 Dockerfile
    FROM alpine:latest

    # Set the working directory to /app
    WORKDIR /app/

    # Install any needed packages specified in requirements.txt
    RUN yes | apk add vim
    RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories
    RUN apk add --update perf

    问题,这些是在容器内运行的命令:
    / # cat /proc/sys/kernel/perf_event_paranoid 
    -1
    / # perf stat -d sleep 1
    Error:
    No permission to enable task-clock event.

    You may not have permission to collect stats.

    Consider tweaking /proc/sys/kernel/perf_event_paranoid,
    which controls use of the performance events system by
    unprivileged users (without CAP_SYS_ADMIN).

    The current value is -1:

    -1: Allow use of (almost) all events by all users
    Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
    >= 0: Disallow ftrace function tracepoint by users without CAP_SYS_ADMIN
    Disallow raw tracepoint access by users without CAP_SYS_ADMIN
    >= 1: Disallow CPU event access by users without CAP_SYS_ADMIN
    >= 2: Disallow kernel profiling by users without CAP_SYS_ADMIN

    To make this setting permanent, edit /etc/sysctl.conf too, e.g.:

    kernel.perf_event_paranoid = -1

    / #

    启动镜像的命令:
    docker run -it --mount type=tmpfs,tmpfs-size=512M,destination=/app/ alpy

    我已经与 perf 合作了很长时间。但是,这是第一次。有谁知道为什么 perf 知道我有权进行个人资料,但不允许我这样做?

    谢谢你。

    最佳答案

    问题是 Docker 在默认情况下会阻止系统调用列表,包括 perf_event_open,这是 perf 严重依赖的。

    官方 docker 引用:https://docs.docker.com/engine/security/seccomp/

    解决方案:

  • 下载标准 seccomp(安全计算)file对于 docker 。这是一个json文件。
  • 找到“perf_event_open”,只出现一次,删除。
  • 在 syscalls 部分添加一个新条目:

    { "names": [ "perf_event_open"], "action": "SCMP_ACT_ALLOW"},
  • 将以下内容添加到您的命令中以运行容器:
    --security-opt seccomp=path/to/default.json

  • 那是为我做的。

    关于Docker Alpine 和 perf 在 docker 容器中相处不融洽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965923/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com