containerd / containerd/nerdctl

Epic: real-world experience migrating from docker to nerdctl

Open
#4,279 0 comments 3 reactions 0 assignees View on GitHub
area/network area/rootless
Dominant language
Go
Stars
10.4k
Forks
826
Avg merge
1d 23h
Merged PRs (30d)
44

Description

I am using a home-grown deployment tooling (similar to terraform-docker) that heavily relies on a (docker) cli to bring up networks, volumes and containers to a desired state on remote iot nodes.

The tool connects over ssh to the node, evaluate the current state of the deployment then delete / create the necessary resources to bring it to the desired state.

I first tried to migrate from docker last year - quickly faced with a large number of failures - this is when I got involved with nerdctl to fix them.

Trying again a year after, things are better, but there are still a number of blocking issues.

This ticket is meant to keep track of all of them. Eventually, they can be broken down in individual tickets to be fixed when they have a simple reproducer or a diagnosis (some of them already are).

**Currently blocking:**
- [ ] containerd/nerdctl#3663
- [ ] containerd/nerdctl#3668 (while technically not a part of the deployment, this one is also hitting my lifecycle)

**Problematic, but not blocking:**
- [ ] containerd/nerdctl#4283
- [x] containerd/nerdctl#4157

**Blocking using rootless:**
- [ ] containerd/nerdctl#4276
- [ ] it is not clear that `dhcp` would work rootless

**Blocking using DHCP:**
- [ ] cni dhcp plugin does not seem to work well when there are multiple interfaces - in my context, `eth0` is not connected, but `wlan0` is - yet, `dhcp` insists on trying to bring up `eth0` and get a lease of it, seemingly ignoring `wlan0` - of course, it deadlines trying to do so
- [ ] cni dhcp plugin will block `nerdctl run`: in failing above, nerdctl run will get stuck (waiting for dhcp), with no timeout - note that the above is in the context of a vlan network which parent is `wlan0` - either I do not know how to use the dhcp plugin properly, or this thing is just not ready

**Minor / can be workaround / can live without for now:**
- [ ] if `uidmap` is missing on the system, rootlesskit error is confusing / unhelpful - rootlesskit should test for the presence of the required binaries and provide a helpful message instead
- [x] containerd/nerdctl#4282

**Fixed / patch pending:**
- [ ] [PRIVATE PATCH] containerd/nerdctl#4281
- [x] somehow, nerdctl has a propensity to create broken containers (in `unknown` state), putting the system in a corrupted state that cannot be recovered from using nerdctl commands - and _maybe_ show underlying containerd issues - this is being discussed in containerd/containerd#11890 (pending upstream fix, thanks to @ningmingxiao)

There might very well be more once I get past these. Will update this ticket accordingly.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.