Эволюция Докера. Часть 1



Введение

Эволюция Докера.
</p><p>
 Часть 1

Будущее контейнеров Linux 20 марта 2013 г.

на PyCon 2013 Соломон Хайкс (генеральный директор dotCloud) провел пятиминутную презентацию.

Будущее контейнеров Linux .

В нем впервые широкой публике была представлена внутренняя разработка компании dotCloud под названием Docker, а через несколько дней ее исходный код был выложен в открытый доступ.

Хотя технология ЛХС И Ауфс , на котором была основана первая версия Docker, существовал и активно использовался около пяти лет, но именно появление Docker положило начало быстрому росту и эволюции систем контейнеризации, которые радикально изменили многие разработки и развертывания программного обеспечения.

процессы.

Этой статьей я собираюсь начать небольшую серию, посвященную изучению развития исходного кода Docker на протяжении нескольких лет. В первой части мы рассмотрим, каким был код на момент создания репозитория git в январе 2013 года.

Тогда исходный код Docker (без учета тестов) состоял всего из шести файлов общим объемом ~600 строк кода, написанных на Go. Это было больше похоже на библиотеку/API, функционал которой заключался только в создании, удалении, запуске и остановке контейнеров.

Мы разберем принцип работы и даже сможем с его помощью запустить подготовленный контейнер.

Во второй части мы перенесемся на несколько месяцев вперед, в март 2013 года, когда Docker был представлен на PyCon. На тот момент в нем уже были практически все привычные нам функции.

А в третьей части я попытаюсь рассмотреть переход Docker с LXC на собственную разработку, произошедший годом позже.



Источник

Для запуска я буду использовать Windows 10 с Vagrant и Ubuntu 20.04. Сразу хочу предупредить, что WSL2 работать не будет, так как используемое ядро не поддерживает aufs, который требовался в более ранних версиях.

Прежде всего нам нужно скачать исходный код https://github.com/docker/engine.git или https://github.com/moby/moby.git .

Клонируем репозиторий и вернемся к началу истории (хеш первого коммита можно получить с помощью git log --reverse ).

  
   

cd /home/vagrant && git clone https://github.com/docker/engine.git && cd .

/engine git checkout -f a27b4b8cb8e838d03a99b6d2b30f76bdaf2f9e5d && wc -l $(ls -1 | grep -v test) HEAD is now at a27b4b8cb8 Initial commit 203 container.go 112 docker.go 52 filesystem.go 94 lxc_template.go 48 state.go 115 utils.go 624 total

На момент создания репозитория (18 января 2013 г.

) код Docker состоял всего из 6 файлов общим объемом 624 строки и, как мы увидим далее, представлял собой лишь обертку и удобное API для утилит. lxc И устанавливать .

Итак, приступим к изучению самого кода, отправной точкой будет файл docker.go , в котором объявляются функции New и NewFromDirectory:

type Docker struct {

Теги: #программирование #История ИТ #Администрирование серверов #docker #DevOps #контейнеры #lxc #docker #aufs

Вместе с данным постом часто просматривают: