1# This test runs a container through gvisor and checks if simple container starts
2
3{ pkgs, ... }:
4{
5 name = "gvisor";
6 meta = with pkgs.lib.maintainers; {
7 maintainers = [ ];
8 };
9
10 nodes = {
11 gvisor =
12 { pkgs, ... }:
13 {
14 virtualisation.docker = {
15 enable = true;
16 extraOptions = "--add-runtime runsc=${pkgs.gvisor}/bin/runsc";
17 };
18
19 networking = {
20 dhcpcd.enable = false;
21 defaultGateway = "192.168.1.1";
22 interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
23 {
24 address = "192.168.1.2";
25 prefixLength = 24;
26 }
27 ];
28 };
29 };
30 };
31
32 testScript = ''
33 start_all()
34
35 gvisor.wait_for_unit("network.target")
36 gvisor.wait_for_unit("sockets.target")
37
38 # Test the Docker runtime
39 gvisor.succeed("tar cv --files-from /dev/null | docker import - scratchimg")
40 gvisor.succeed(
41 "docker run -d --name=sleeping --runtime=runsc -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10"
42 )
43 gvisor.succeed("docker ps | grep sleeping")
44 gvisor.succeed("docker stop sleeping")
45 '';
46}