docker-ce中containerd / runc的代码在哪里?

I am trying to debug docker (including everything, docker, dockerd, containerd, runc), and have cloned source code from github/docker/docker-ce.

Now I can locate the source code of:

  • docker (docker-cli): at components/cli
  • dockerd: at components/engine/daemon

in repo of docker-ce and successfully make them.

But I cannot find the code of containerd and runc in docker-ce repo, while there are binaries of them when make command is triggered.

So where the binaries come from?

I know there are repos of containerd and runc.

Here's my own findings from a quick scan. The Makefile for components/engine includes various steps, including a docker build.

The Dockerfile includes sections for containerd and runc:

FROM base AS containerd
RUN apt-get update && apt-get install -y btrfs-tools
ENV INSTALL_BINARY_NAME=containerd
COPY hack/dockerfile/install/install.sh ./install.sh
COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
RUN PREFIX=/build/ ./install.sh $INSTALL_BINARY_NAME

FROM runtime-dev AS runc
ENV INSTALL_BINARY_NAME=runc
COPY hack/dockerfile/install/install.sh ./install.sh
COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
RUN PREFIX=/build/ ./install.sh $INSTALL_BINARY_NAME

Then in the hack folder for the dockerfile, there are scripts to install containerd and runc.

These scripts clone the repo and checkout specific commits from containerd and runc's upstream repos.