On 1/7/20 1:29 AM, Shengjing Zhu wrote:
We should keep containerd version in sync with docker. eg docker
19.03.x with containerd 1.2.x. And I guest next docker major version
will use containerd 1.3.x.


Agreed on that, as long as both projects are in sync upstream, that can work.



Talking about versions, looking at the file 
https://download.docker.com/linux/debian/dists/buster/stable/binary-amd64/Packages,
 I can see that:

- the docker-ce package started to depend on container.io from the 18.09.x 
series (it's been a while: good)
- the latest version of docker-ce "5:19.03.5~3-0~debian-buster" depends on 
containerd.io (>= 1.2.2-3)... Where is the source for this package? Is containerd.io 
patched here?

I found a comment from someone asking for the sources of the package: 
https://github.com/containerd/containerd/issues/1508#issuecomment-461413010. 
The comment went unanswered. A bit more research, and still no idea where are 
the source for this package. Do you have an idea?

Neither do I :(

But let's be optimized about this. There's no reason for docker
upstream to _hide_ some patches which are not applied in containerd
upstream :)
Actually if you look at commits in containerd release branch, the
people from docker are actively backporting things.


I don't think anyone hides anything, but I don't want to be in the situation were:

- you install docker and containerd from docker repos, everything works
- you install docker and containerd from debian repos (same versions as in docker repos), and some things don't work...

Why? Because there are some patches in containerd.io (from docker repos) that we are not aware of...

That's one thing I'm worried about as long as I don't have the source package for containerd.io.

The second thing is that, in any case, we shouldn't patch containerd to accomodate docker. If docker is the consumer of containerd, and can't work with it "as is", then docker has to be patched, not containerd.

All of that is theoretical speaking, maybe in the end docker and containerd can work with each other, from tagged version, and without any patch.

But this has never been the case up to now (I mean, docker could never /build/ against a tagged version of containerd, at least), so I have reasons to be cautious, and not over optimistic.



CRI makes containerd useful without docker in a kubernetes worker
node. (That's why I want a separate containerd package)

I have some mistakes in my previous sentence. It should be,
+ github.com/containerd/cri pull in github.com/docker/docker.
+ github.com/containerd/containerd/cmd/containerd pull in
github.com/containerd/cri
So only when you build containerd binary(with cri), you will need
github.com/docker/docker.
No consumer will pull in github.com/containerd/containerd/cmd/..., so
no need to pull in github.com/docker/docker.
There's no circular dependencies, apparently.


Thanks for the details.

Correct me if I'm wrong, but there's still a bit of a circular dep, in the sense that the Build-Depends are for the source package, not for each binary package produced.

So, assuming that we want to bump both docker and containerd to a new major version, the situation could very well be:

1) try to update containerd -> oh, requires a new version of containerd/cri
2) so let's try to update containerd/cri -> oh, requires a new version of docker
3) so let's try to update docker -> oh, requires a new version of containerd
4) back to 1...

That wouldn't be the first circular of this kind, we already had it at some point with fsouza-go-dockerclient, even though I think these days it's gone.

Anyway.

I think you can already upload containerd to unstable at this point? Or is there some blocker?

I'm not fundamentally against attempts to un-bundle containerd from docker, but the reality is that I don't know when (if ever) I can spend time giving it a try, and in the meantime you shouldn't be waiting on me. The docker package shouldn't block the containerd package from being in unstable, and unless I'm mistaken, at the moment it doesn't.

In the short-term, for unstable, I would be in favor of having containerd, and also docker.io as it is now, ie. with bundled containerd. And in a longer term, possibly before bullseyes, if it seems realistic, I will find some time to work on un-bundling.

Having someone working on the containerd packaging is already a great improvement, so it's good that this discussion is taking place.

Thanks!

  Arnaud

Reply via email to