Podman: Difference between revisions

From NixOS Wiki
imported>Eoli3n
No edit summary
imported>JohnAZoidberg
Add instructions for new Podman module
Line 1: Line 1:
Podman can run rootless docker containers
Podman can run rootless containers and be a drop-in replacement for Docker.


== Install podman ==
== Install and configure podman with NixOS service configuration (NixOS unstable) ==
 
<syntaxHighlight lang="nix">
{ pkgs, ... }:
{
  virtualisation = {
    # To map subuid and subguid for your user and allow rootless containers
    containers.users = [ "yourusername" ];
 
    podman = {
      enable = true;
 
      # Create a `docker` alias for podman, to use it as a drop-in replacement
      dockerCompat = true;
    };
  };
}
</syntaxHighlight>
 
 
== Old manual configuration (NixOS <=20.03) ==


<syntaxHighlight lang="nix">
<syntaxHighlight lang="nix">
Line 10: Line 30:
</syntaxHighlight>
</syntaxHighlight>


== Configure subuid/subgid for your user ==
=== Configure subuid/subgid for your user ===


<syntaxHighlight lang="nix">
<syntaxHighlight lang="nix">
Line 20: Line 40:
</syntaxHighlight>
</syntaxHighlight>


== Create configuration files ==
=== Create configuration files ===


<syntaxHighlight lang="nix">
<syntaxHighlight lang="nix">

Revision as of 08:38, 11 May 2020

Podman can run rootless containers and be a drop-in replacement for Docker.

Install and configure podman with NixOS service configuration (NixOS unstable)

{ pkgs, ... }:
{
  virtualisation = {
    # To map subuid and subguid for your user and allow rootless containers
    containers.users = [ "yourusername" ];

    podman = {
      enable = true;

      # Create a `docker` alias for podman, to use it as a drop-in replacement
      dockerCompat = true;
    };
  };
}


Old manual configuration (NixOS <=20.03)

{ pkgs, ... }:
{
  environment.systemPackages = with pkgs; [ podman runc conmon slirp4netns fuse-overlayfs ];
}

Configure subuid/subgid for your user

{
  users.users.username.subUidRanges = [{ startUid = 100000; count = 65536; }];
  users.users.username.subGidRanges = [{ startGid = 100000; count = 65536; }];
}

Create configuration files

{
  environment.etc."containers/policy.json" = {
    mode="0644";
    text=''
      {
        "default": [
          {
            "type": "insecureAcceptAnything"
          }
        ],
        "transports":
          {
            "docker-daemon":
              {
                "": [{"type":"insecureAcceptAnything"}]
              }
          }
      }
    '';
  };

  environment.etc."containers/registries.conf" = {
    mode="0644";
    text=''
      [registries.search]
      registries = ['docker.io', 'quay.io']
    '';
  };
}