at master 2.3 kB view raw
1# This test runs docker-registry and check if it works 2{ pkgs, ... }: 3{ 4 name = "docker-registry"; 5 meta = with pkgs.lib.maintainers; { 6 maintainers = [ 7 globin 8 ironpinguin 9 cafkafk 10 ]; 11 }; 12 13 nodes = { 14 registry = 15 { ... }: 16 { 17 services.dockerRegistry.enable = true; 18 services.dockerRegistry.enableDelete = true; 19 services.dockerRegistry.port = 8080; 20 services.dockerRegistry.listenAddress = "0.0.0.0"; 21 services.dockerRegistry.enableGarbageCollect = true; 22 services.dockerRegistry.openFirewall = true; 23 }; 24 25 client1 = 26 { ... }: 27 { 28 virtualisation.docker.enable = true; 29 virtualisation.docker.extraOptions = "--insecure-registry registry:8080"; 30 }; 31 32 client2 = 33 { ... }: 34 { 35 virtualisation.docker.enable = true; 36 virtualisation.docker.extraOptions = "--insecure-registry registry:8080"; 37 }; 38 }; 39 40 testScript = '' 41 client1.start() 42 client1.wait_for_unit("docker.service") 43 client1.succeed("tar cv --files-from /dev/null | docker import - scratch") 44 client1.succeed("docker tag scratch registry:8080/scratch") 45 46 registry.start() 47 registry.wait_for_unit("docker-registry.service") 48 registry.wait_for_open_port(8080) 49 client1.succeed("docker push registry:8080/scratch") 50 51 client2.start() 52 client2.wait_for_unit("docker.service") 53 client2.succeed("docker pull registry:8080/scratch") 54 client2.succeed("docker images | grep scratch") 55 56 client2.succeed( 57 "curl -fsS -X DELETE registry:8080/v2/scratch/manifests/$(curl -fsS -I -H\"Accept: application/vnd.docker.distribution.manifest.v2+json\" registry:8080/v2/scratch/manifests/latest | grep Docker-Content-Digest | sed -e 's/Docker-Content-Digest: //' | tr -d '\\r')" 58 ) 59 60 registry.systemctl("start docker-registry-garbage-collect.service") 61 registry.wait_until_fails("systemctl status docker-registry-garbage-collect.service") 62 registry.wait_for_unit("docker-registry.service") 63 64 registry.fail("ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data") 65 66 client1.succeed("docker push registry:8080/scratch") 67 registry.succeed( 68 "ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data" 69 ) 70 ''; 71}