首页 > 解决方案 > Podman 内存锁限制

问题描述

我正在评估 Fedora Silverblue 作为我的主要开发操作系统,我将与其他将使用 MacOS 或其他 Linux 发行版的开发人员一起使用它。我需要使用 Docker 容器。

Fedora 附带 Podman 作为管理容器的无根替代方案,它应该具有与 docker 完全相同的界面,因此alias docker=podman应该可以工作。

我也安装podman-composedocker-compose经验,一切都很好,但我正在努力使用以下配置来设置 ELK 堆栈:

version: '3.3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    container_name: elasticsearch
    ports:
      - 9200:9200
    environment:
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:7.7.0
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_URL: http://elasticsearch:9200
      ELASTICSEARCH_HOSTS: http://elasticsearch:9200
    networks:
      - elastic

networks:
  elastic:
    driver: bridge

虽然这适用于 Docker,但由于以下配置,它不适用于 Podman:

ulimits:
  memlock:
    soft: -1
    hard: -1

我知道这适用于 Docker,因为它以高权限运行并且可以将这些限制设置为无限制,但是因为 Podman 是无根的并且我运行 Silverblue,所以无法提高这些限制。

我已经搜索了如何使用 Podman、Silverblue 增加 ulimit 但不能。

是否有任何方法可以通过 Podman on Silverblue 增加这些限制并使此类docker-compose设置适用于我的系统?

标签: fedorapodmanfedora-silverblue

解决方案


如果您以无 root 用户身份运行 Podman,则不允许将 ulimit 设置为高于会话当前的值。

如果您需要设置更高的 ulimit,您要么需要允许您的用户拥有它(调整 /etc/security/limits.conf),要么以 root 身份运行容器。


推荐阅读