Conversation
4facbcf to
9f8049c
Compare
daemon/config.go
Outdated
There was a problem hiding this comment.
Can this also be a path to a UNIX socket? If so, the description should mention that as well.
9f8049c to
008e234
Compare
daemon/daemon.go
Outdated
008e234 to
02b1fbc
Compare
daemon/oci_linux.go
Outdated
There was a problem hiding this comment.
Errors should start with lowercase. Same applies to other functions in this file.
There was a problem hiding this comment.
These errors (and the one in daemon/daemon) are carried over from execdriver codebase. They probably should be changed with a PR that only changes that.
libcontainerd/container.go
Outdated
There was a problem hiding this comment.
The same interface is defined in the restartmanager package. Could one package import the other to avoid the duplicate definition?
a8895b3 to
10070d8
Compare
|
Amazing work 👍 and I have tested this, it's really awesome. This make daemon hot upgrade possible and make engine with high availability. I think this also need the libnetwork to restore the old running container network settings. I create an issue #moby/libnetwork#975. I make some progress to support this https://github.com/coolljt0725/docker/tree/containerd-integration-network, it can work. |
|
Ping @chanwit: I know you've been experimenting with containerd and we'd love to have your feedback! |
d70d16b to
d03404e
Compare
|
This is wonderful. Read the code and not sure I'm understanding it correctly. This PR is replacing the execdriver with containerd, but I am expecting containerd to be working in parallel with the current implementation. WDYT? |
|
@chanwit There is a |
docker/daemon.go
Outdated
There was a problem hiding this comment.
should we return if the error is not nil? if the error is not nil, the containerdRemote will nil, this will make the following d, err := daemon.NewDaemon(cli.Config, registryService, containerdRemote) failed with crash, because d.containerd, err = containerdRemote.Client(d) in NewDaemon will failed with panic: runtime error: invalid memory address or nil pointer dereference. A easy way to reproduce this is not install containerd in $PATH
|
@tonistiigi Maybe I couldn't explain it clearly. What I meant is that
|
|
W00000000t! Great work all! |
|
Congratulations! 🎆 |
|
🎉 |
|
Congrats! |
|
🎉 |
|
😺 |
|
congrats! ㊗️ |
|
gg, hope migration/update will be smooth |
|
Does this require |
|
@luxas Yes it does. However, the docker packages will bundle all necessary binaries. So if you're using our packages they'll be automatically installed. If you build directly from master, you can copy the generated binaries from the image generated by |
|
I'm currently working on a follow up PR that will be adding the binaries to the packages. I'll also be working on adding all of the binaries to the tar files that we provide so that you will be able to download a tar bundle with all required binaries. |
|
congrats! amazing work! |
|
hi @tonistiigi or other docker maintainers, since related docker contribution docs not updated. I tried root@bf86488287ac:/go/src/github.com/docker/docker# cp bundles/1.11.0-dev/binary/docker /usr/bin/ Do I need to download containerd and install on my test container env ? |
|
@HackToday I think so, they are separate binary, you need install |
|
Do you mind if I ask why the other execdriver was purged in a single minor version release of Docker? LXC died after at least 2 years of support, and now we've nixed |
|
hi @coolljt0725 and @tonistiigi I am not sure if it is good practice for that, I assume if we introduce such change, it would be better to add developer support, like To me, it seems not friendly to developers. Unless I miss something in master branch doc. |
|
I think they are working on docs, it should come soon I guess.
|
|
I have removed old built image dry-run-test. and run |
|
@cyphar We're not removing |
|
@icecrime Correction, 3 process boundaries ( |
|
@cyphar Can you please explain what is the user-facing breaking change? |
|
For package maintainers, we now have to maintain 2 more packages ( Also, "what is the user-facing breaking change" is not the only relevant question. There are also questions about maintainability that need to be considered before core components are removed. |
|
I was hoping that we could retain the execdriver abstraction too at least for 1 release so we can roll this out and test it slowly on a few applications instead of having to test it on a few nodes. User will not see any changes, but operators of large cluster probably will :p |
fixes #11529
fixes #20361
fixes #2658
This removes docker execdrivers and implements container execution on top of containerd. containerd is a daemon for controlling
runc, or any executor compatible with the oci spec.
One of the ux changes with this is that containers will not die when the docker daemon(or containerd) crashes. In the future this will the daemon you should be able to reattach to containers. Currently this feature is only enabled for the experimental build.
If no path to containerd is specified docker will launch the containerd daemon for you.
If you build/test manually without the Dockerfile context you will need
containerd,containerd-shimandruncbinaries. Please refer to the Dockerfile for the current versions as they contain some hotfixes atm. If you build with Dockerfile(or user our package in the future) then everything should be set.Implementation:
daemon/oci*- manages the creation of oci bundles from docker data structures.oci/*- Helper pkg for making oci specs.libcontainerd/*- Package for interacting with containerd api.TODO/Known issues(please report more):
/sysmount rule for--privilegeddocker execprocessdocker exec --privileged(needs oci/runc implementation)docker exec -twith userns (permission denied) (containerd)docker update(needs containerd implementation)