#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, расположенных выше по потоку.