Где находится код контейнера / runc в docker-ce?

#docker #go

#docker #Вперед

Вопрос:

Я пытаюсь отладить docker (включая все, docker, dockerd, containerd, runc) и клонировал исходный код из github / docker / docker-ce.

Теперь я могу найти исходный код:

  • docker (docker-cli): в components/cli
  • dockerd: в компонентах / движке / демоне

в репозитории docker-ce и успешно make их.

Но я не могу найти код containerd и runc в репозитории docker-ce, хотя при запуске make команды из них есть двоичные файлы.

Итак, откуда берутся двоичные файлы?

Я знаю, что есть репозитории containerd и runc.

Ответ №1:

Вот мои собственные выводы из быстрого сканирования. Makefile для компонентов / движка включает в себя различные этапы, включая сборку docker.

Файл Dockerfile включает разделы для containerd и runc:

 FROM base AS containerd
RUN apt-get update amp;amp; 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
  

Затем в папке hack для файла dockerfile есть сценарии для установки containerd и runc.

Эти скрипты клонируют репозиторий и извлекают конкретные коммиты из репозиториев containerd и runc, расположенных выше по потоку.