podman 运行失败,显示 /sys/fs/cgroup/user.slice/.../libpod-xxxxxxxx..../pids.max:没有这样的文件或目录

问题描述 投票:0回答:1

我尝试了 podman run 命令,并收到 pids.max not found 错误:

podman run --mount type=bind,source=$(pwd)/master,target=/home/SDM -it container.lzlabs.com/images/x86_64/ol/9-pg14/build-pre:master bash
Error: runc: runc create failed: unable to start container process: error during container init: error setting cgroup config for procHooks process: openat2 
/sys/fs/cgroup/user.slice/user-1001.slice/[email protected]/user.slice/libpod-35bf499a220ec6428ba4dbbe5f542774ba56344d854d89e6e8028e95853b1198.scope/pids.max: no such file or directory: OCI runtime attempted to invoke a command that was not found

正在运行 Oracle Linux Server 版本 8.8,运行 Linux 内核版本 5.15.0-205。

systemctl 显示 podman 服务正在运行:

CGroup: /
        ├─user.slice
        │ └─user-1001.slice
        │   ├─[email protected]
        │   │ ├─user.slice
        │   │ │ └─podman-pause-2b20a995.scope
        │   │ │   └─2635 podman
        │   │ ├─init.scope
        │   │ │ ├─1244 /usr/lib/systemd/systemd --user
        │   │ │ └─1245 (sd-pam)
        │   │ └─dbus.service
        │   │   └─2653 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

user.slice 目录确实存在:

> ls /sys/fs/cgroup/user.slice/user-1001.slice/[email protected]/user.slice
cgroup.controllers
cgroup.events
cgroup.freeze
cgroup.kill
cgroup.max.depth
cgroup.max.descendants
cgroup.procs
cgroup.stat
cgroup.subtree_control
cgroup.threads
cgroup.type
cpu.pressure
cpu.stat
io.pressure
memory.pressure
podman-pause-2b20a995.scope

但没有 libpod-35bf499a220ec6428ba4dbbe5f542774ba56344d854d89e6e8028e95853b1198.scope 目录。

> podman info
host:
  arch: amd64
  buildahVersion: 1.29.0
  cgroupControllers: []
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: conmon-2.1.6-1.module+el8.8.0+21045+adcb6a64.x86_64
    path: /usr/bin/conmon
    version: 'conmon version 2.1.6, commit: 31a72124adb6095b6be85b27e3e481313a1cea96'
  cpuUtilization:
    idlePercent: 99.17
    systemPercent: 0.17
    userPercent: 0.66
  cpus: 8
  distribution:
    distribution: '"ol"'
    variant: server
    version: "8.8"
  eventLogger: file
  hostname: lznuc1
  idMappings:
    gidmap:
    - container_id: 0
      host_id: 1001
      size: 1
    - container_id: 1
      host_id: 165536
      size: 65536
    uidmap:
    - container_id: 0
      host_id: 1001
      size: 1
    - container_id: 1
      host_id: 165536
      size: 65536
  kernel: 5.15.0-205.149.5.1.el8uek.x86_64
  linkmode: dynamic
  logDriver: k8s-file
  memFree: 31275708416
  memTotal: 33531850752
  networkBackend: cni
  ociRuntime:
    name: runc
    package: runc-1.1.4-1.0.1.module+el8.8.0+21119+51f68ed8.x86_64
    path: /usr/bin/runc
    version: |-
      runc version 1.1.4
      spec: 1.0.2-dev
      go: go1.19.10
      libseccomp: 2.5.2
  os: linux
  remoteSocket:
    path: /run/user/1001/podman/podman.sock
  security:
    apparmorEnabled: false
    capabilities: CAP_SYS_CHROOT,CAP_NET_RAW,CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID
    rootless: true
    seccompEnabled: true
    seccompProfilePath: /usr/share/containers/seccomp.json
    selinuxEnabled: false
  serviceIsRemote: false
  slirp4netns:
    executable: /usr/bin/slirp4netns
    package: slirp4netns-1.2.0-2.module+el8.8.0+21045+adcb6a64.x86_64
    version: |-
      slirp4netns version 1.2.0
      commit: 656041d45cfca7a4176f6b7eed9e4fe6c11e8383
      libslirp: 4.4.0
      SLIRP_CONFIG_VERSION_MAX: 3
      libseccomp: 2.5.2
  swapFree: 2147479552
  swapTotal: 2147479552
  uptime: 0h 28m 45.00s
plugins:
  authorization: null
  log:
  - k8s-file
  - none
  - passthrough
  - journald
  network:
  - bridge
  - macvlan
  - ipvlan
  volume:
  - local
registries:
  search:
  - container-testing.lzlabs.com
  - container.lzlabs.com
  - registry.access.redhat.com
  - registry.redhat.io
  - docker.io
store:
  configFile: /home/pjoot/.config/containers/storage.conf
  containerStore:
    number: 8
    paused: 0
    running: 0
    stopped: 8
  graphDriverName: overlay
  graphOptions: {}
  graphRoot: /home/pjoot/.local/share/containers/storage
  graphRootAllocated: 996516020224
  graphRootUsed: 355193028608
  graphStatus:
    Backing Filesystem: xfs
    Native Overlay Diff: "true"
    Supports d_type: "true"
    Using metacopy: "false"
  imageCopyTmpDir: /run/user/1001
  imageStore:
    number: 1
  runRoot: /run/user/1001/containers
  transientStore: false
  volumePath: /home/pjoot/.local/share/containers/storage/volumes
version:
  APIVersion: 4.4.1
  Built: 1689930982
  BuiltTime: Fri Jul 21 05:16:22 2023
  GitCommit: ""
  GoVersion: go1.19.10
  Os: linux
  OsArch: linux/amd64
  Version: 4.4.1
podman
1个回答
0
投票

这似乎与 https://bugzilla.redhat.com/show_bug.cgi?id=1897579 有关。 我在 RockyLinux 8.10 上也遇到了同样的错误消息,并且运行了无根系统,但是在重建后它最终自行修复了......以至于我无法再重现该错误......

为了充分披露,我在 Windows 10 上运行 WSLv2,并激活了多个发行版。

有一些差异,我的 systemd 状态是:

$ systemctl status -l --user
● rockylinux
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Thu 2024-10-24 14:15:36 AEDT; 3min 40s ago
   CGroup: /user.slice/user-1000.slice/[email protected]
           ├─user.slice
           │ └─podman-pause-a09ecfad.scope
           │   └─203 catatonit -P
           ├─init.scope
           │ ├─159 /usr/lib/systemd/systemd --user
           │ └─160 (sd-pam)
           └─dbus.service
             └─216 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

主要区别在于 podman-pause 的子进程。 这可能是容器版本差异,但除此之外它是一致的。

根据您的

podman info
输出,您的cgroupControllers为空,cgroupVersion v2,而对我来说,我有内存和pid:

$ podman info | less
host:
  arch: amd64
  buildahVersion: 1.33.8
  cgroupControllers:
  - memory
  - pids
  cgroupManager: systemd
  cgroupVersion: v2
...

随后,运行

podman run hello-world
即可。 (我们都知道输出是什么)

根据 bugzilla 链接,添加以下内容将解决您的问题:

cat >/etc/systemd/system/user-.slice.d/override.conf<<-EOF
[Slice]
Slice=user.slice
CPUAccounting=yes
MemoryAccounting=yes
IOAccounting=yes
TasksAccounting=yes
EOF

我建议仔细阅读 bugzilla 票证,因为有几种方法可以解决该问题。 上面的方法适用于 RockyLinux,这是我正在使用的风格。 正如前面提到的,我实际上不知道为什么我的设置现在可以工作。 构建是脚本化的,并且正在导入相同的基础发行版。 我唯一的预感是活跃发行版之间存在系统冲突。

© www.soinside.com 2019 - 2024. All rights reserved.