Description
When initializing any unikernel on any VMM using nerdctl through urunc-v2 runtime, the containerd-shim-urunc-v2 fails to parse the -info flag passed by the containerd daemon (expecting metadata for runtime-shim), resulting in exit status 2 and logs an error for the same.
Logs
Containerd logs:
level=error msg="failed to load runtime info" error="failed to run [/usr/local/bin/containerd-shim-urunc-v2 -info]: exit status 2 (stderr: \"flag provided but not defined: -info\nUsage of /usr/local/bin/containerd-shim-urunc-v2:\n -address string\n \tgrpc address back to main containerd\n -bundle string\n \tpath to the bundle if not workdir\n -debug\n \tenable debug output in logs\n -id string\n \tid of the task\n -namespace string\n \tnamespace that owns the shim\n -publish-binary string\n \tpath to publish binary (used for publishing events), but /usr/local/bin/containerd-shim-urunc-v2 will ignore this flag, please use the TTRPC_ADDRESS env\n -socket string\n \tsocket path to serve\n -v\tshow the shim version and exit\n\")" runtime=io.containerd.urunc.v2
System info
- Urunc version: commit
f6ddb034acd31955e94a1c2a920cdb51d3f52f2e on branch main
- Arch: x86-64 (AMD 64)
- VMM: QEMU
- Unikernel: Nginx Unikraft
- containerd version: 2.3.1 (also tested on 1.7.17 and got same bug)
Note: This bug happens regardless of which unikernel or VMM you run.
Steps to reproduce
- Deploy any unikernel on any VMM via nerdctl. For example, nginx unikraft on QEMU:
sudo nerdctl run --rm -ti --runtime io.containerd.urunc.v2 harbor.nbfc.io/nubificus/urunc/nginx-qemu-unikraft-initrd:latest
Note: you can run the container in detached mode if you like, to make it easier to check the logs on next step.
- Now check the logs via journalctl:
journalctl -eu containerd.service -n 100 | cat
- Observe the -info flag parsing error (refer 'logs' section for exact error).
Description
When initializing any unikernel on any VMM using nerdctl through urunc-v2 runtime, the containerd-shim-urunc-v2 fails to parse the
-infoflag passed by the containerd daemon (expecting metadata for runtime-shim), resulting in exit status 2 and logs an error for the same.Logs
Containerd logs:
level=error msg="failed to load runtime info" error="failed to run [/usr/local/bin/containerd-shim-urunc-v2 -info]: exit status 2 (stderr: \"flag provided but not defined: -info\nUsage of /usr/local/bin/containerd-shim-urunc-v2:\n -address string\n \tgrpc address back to main containerd\n -bundle string\n \tpath to the bundle if not workdir\n -debug\n \tenable debug output in logs\n -id string\n \tid of the task\n -namespace string\n \tnamespace that owns the shim\n -publish-binary string\n \tpath to publish binary (used for publishing events), but /usr/local/bin/containerd-shim-urunc-v2 will ignore this flag, please use the TTRPC_ADDRESS env\n -socket string\n \tsocket path to serve\n -v\tshow the shim version and exit\n\")" runtime=io.containerd.urunc.v2System info
f6ddb034acd31955e94a1c2a920cdb51d3f52f2eon branchmainNote: This bug happens regardless of which unikernel or VMM you run.
Steps to reproduce
sudo nerdctl run --rm -ti --runtime io.containerd.urunc.v2 harbor.nbfc.io/nubificus/urunc/nginx-qemu-unikraft-initrd:latestNote: you can run the container in detached mode if you like, to make it easier to check the logs on next step.
journalctl -eu containerd.service -n 100 | cat