Введение
Будущее контейнеров Linux 20 марта 2013 г.
на PyCon 2013 Соломон Хайкс (генеральный директор dotCloud) провел пятиминутную презентацию.
В нем впервые широкой публике была представлена внутренняя разработка компании 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 ).
На момент создания репозитория (18 января 2013 г.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
) код Docker состоял всего из 6 файлов общим объемом 624 строки и, как мы увидим далее, представлял собой лишь обертку и удобное API для утилит. lxc И устанавливать .
Итак, приступим к изучению самого кода, отправной точкой будет файл docker.go , в котором объявляются функции New и NewFromDirectory: type Docker struct {
Теги: #программирование #История ИТ #Администрирование серверов #docker #DevOps #контейнеры #lxc #docker #aufs
-
Хабру 14 Лет.
19 Oct, 24 -
Удивительный Хостинг
19 Oct, 24 -
Reactos 0.4.7: Павел Дуров Больше Не Пуйщн
19 Oct, 24 -
Ip Doorbell – Интерактивный Дверной Звонок
19 Oct, 24