Podman 内存锁限制

Podman memlock limits

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

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

我还安装了 podman-compose 以获得 docker-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,但没有找到。

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

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

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