Руководство по компиляции и упаковке исходного кода Docker (docker-ce)

Docker
  1. Предпосылки: ужеустановить докер.

Докер разрабатывается ежемесячно по одному выпуску. Соглашение об именах: год-месяц-ce, где ce представляет версию сообщества.

В этой статье используется версия Docker 18.06.3-ce.

Docker CE включает механизм Docker, командную строку Docker и инструменты для упаковки. В Интернете есть и другие примеры упаковки с помощью moby или отдельного механизма Docker.Для сравнения, docker ce является наиболее полной и подходящей компиляцией и упаковкой, так что упакованный пакет rpm можно установить напрямую, вместо ручной замены бинарного файла docker. упаковка!

  1. Скачать исходный код

    git clone https://github.com/docker/docker-ce

  • Впечатляющая скорость интернета! Возьмите скоростную полосу:git ee.com/mumu7/doc…
  1. Исходный код 163 МБ, загружен!
cd docker-ce
  1. переключить ветку
git checkout -b v18.06.3-ce

3. Войдите в каталог пакетаcd ./components/packaging/rpm/Таким образом, пакет rpm получается позже, и есть еще одна директория, где вы можете набрать пакет deb и забрать его самостоятельно.

  1. Команда компиляции и упаковки:
make  VERSION=18.06.3-ce ENGINE_DIR=/path-to-docker/docker-ce/components/engine CLI_DIR=/path-to-docker/docker-ce/components/cli centos-7
  1. Разумеется, все будет не так гладко, и компиляция сразу же завершится ошибкой:buildkit not supported by daemon!

6. Как видно из рисунка выше, окончательные сгенерированные инструкции компиляции:

docker run --rm -v /root/qzy/docker-src/docker-ce/components/packaging/rpm:/v -w /v alpine chown -R root:root rpmbuild
DOCKER_BUILDKIT=1 docker build  --build-arg GO_IMAGE=golang:1.13.10-buster -t rpmbuild-centos-7/x86_64 -f centos-7/Dockerfile .

В том числеDOCKER_BUILDKIT=1, затем изменитеDOCKER_BUILDKIT=0пытаться. Это устанавливается в каталоге rpmMakefileОколо 16 строк! После сохранения можно продолжить компиляцию.

Причина в том, что скачанный докер не поддерживает билдкит, поэтому DOCKER_BUILDKIT нужно отключить, не волнуйтесь!

  1. Установил или обновил много зависимых пакетов (в системе), скачал много блоков кода с github, занял 10 минут и сообщил об ошибке:

fatal: unable to access 'https://github.com/krallin/tini.git/': Failed connect to github.com:443; Connection timed out
Похоже, проблема в сети, попробуйте еще раз!

  1. Это действительно проблема с сетью, повторите попытку дважды, чтобы завершить загрузку tini, и продолжите загрузку зависимостей. После этого я несколько раз повторял попытку из-за проблем с сетью, и компиляция была завершена:

    exit 0Указывает, что он вышел нормально.

  2. Входитьdocker-ce/components/packaging/rpm/rpmbuild/RPMS/x86_64Проверять:

  3. Скопируйте на другую машину установку rpm. Установить первымdocker-ce-cliпосле установкиdocker-ce, использовать после установкиdocker versionПроверьте версию! Если у вас есть вопросы, пожалуйста, ответьте на обмен!