1# This test runs docker and checks if simple container starts
2
3import ./make-test.nix ({ pkgs, ...} : {
4 name = "docker";
5 meta = with pkgs.stdenv.lib.maintainers; {
6 maintainers = [ nequissimus offline ];
7 };
8
9 nodes = {
10 docker =
11 { config, pkgs, ... }:
12 {
13 virtualisation.docker.enable = true;
14 virtualisation.docker.package = pkgs.docker-edge;
15
16 users.users = {
17 noprivs = {
18 isNormalUser = true;
19 description = "Can't access the docker daemon";
20 password = "foobar";
21 };
22
23 hasprivs = {
24 isNormalUser = true;
25 description = "Can access the docker daemon";
26 password = "foobar";
27 extraGroups = [ "docker" ];
28 };
29 };
30 };
31 };
32
33 testScript = ''
34 startAll;
35
36 $docker->waitForUnit("sockets.target");
37 $docker->succeed("tar cv --files-from /dev/null | docker import - scratchimg");
38 $docker->succeed("docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10");
39 $docker->succeed("docker ps | grep sleeping");
40 $docker->succeed("sudo -u hasprivs docker ps");
41 $docker->fail("sudo -u noprivs docker ps");
42 $docker->succeed("docker stop sleeping");
43
44 # Must match version twice to ensure client and server versions are correct
45 $docker->succeed('[ $(docker version | grep ${pkgs.docker-edge.version} | wc -l) = "2" ]');
46 '';
47})