docker module: updates

- logDriver option, use journald for logging by default
- keep storage driver intact by default, as docker has sane defaults
- do not choose storage driver in tests, docker will choose by itself
- use dockerd binary as "docker daemon" command is deprecated and will be
  removed
- add overlay2 to list of storage drivers
This commit is contained in:
Jaka Hudoklin 2016-09-10 12:55:46 +02:00
parent 0a518618a2
commit 5d9c62541a
2 changed files with 21 additions and 7 deletions

View File

@ -40,13 +40,25 @@ in
}; };
storageDriver = storageDriver =
mkOption { mkOption {
type = types.enum ["aufs" "btrfs" "devicemapper" "overlay" "zfs"]; type = types.nullOr (types.enum ["aufs" "btrfs" "devicemapper" "overlay" "overlay2" "zfs"]);
default = "devicemapper"; default = null;
description = description =
'' ''
This option determines which Docker storage driver to use. This option determines which Docker storage driver to use. By default
it let's docker automatically choose preferred storage driver.
''; '';
}; };
logDriver =
mkOption {
type = types.enum ["none" "json-file" "syslog" "journald" "gelf" "fluentd" "awslogs" "splunk" "etwlogs" "gcplogs"];
default = "journald";
description =
''
This option determines which Docker log driver to use.
'';
};
extraOptions = extraOptions =
mkOption { mkOption {
type = types.separatedString " "; type = types.separatedString " ";
@ -88,7 +100,12 @@ in
after = [ "network.target" ] ++ (optional cfg.socketActivation "docker.socket") ; after = [ "network.target" ] ++ (optional cfg.socketActivation "docker.socket") ;
requires = optional cfg.socketActivation "docker.socket"; requires = optional cfg.socketActivation "docker.socket";
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.docker}/bin/docker daemon --group=docker --storage-driver=${cfg.storageDriver} ${optionalString cfg.socketActivation "--host=fd://"} ${cfg.extraOptions}"; ExecStart = ''${pkgs.docker}/bin/dockerd \
--group=docker --log-driver=${cfg.logDriver} \
${optionalString (cfg.storageDriver != null) "--storage-driver=${cfg.storageDriver}"} \
${optionalString cfg.socketActivation "--host=fd://"} \
${cfg.extraOptions}
'';
# I'm not sure if that limits aren't too high, but it's what # I'm not sure if that limits aren't too high, but it's what
# goes in config bundled with docker itself # goes in config bundled with docker itself
LimitNOFILE = 1048576; LimitNOFILE = 1048576;

View File

@ -11,9 +11,6 @@ import ./make-test.nix ({ pkgs, ...} : {
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
# FIXME: The default "devicemapper" storageDriver fails in NixOS VM
# tests.
virtualisation.docker.storageDriver = "overlay";
}; };
}; };