Докер, наверное, не ожидал, что в 2020 году он дважды попадет в фокус (общественного мнения) в технологическом кругу, но это из-за скудной информации (не будет преувеличением сказать, что это «титульная партия»).
Обзор
2013 год
Docker был впервые официально анонсирован на PyCon 2013.
Он предлагает усовершенствованный метод доставки программного обеспечения, а именно доставку программного обеспечения через образы контейнеров.
Инженерам нужны только простыеdocker build
команду, чтобы сделать свой собственный образ, и передатьdocker push
将其发布至 DockerHub 上。
Простоdocker run
Команда может быстро запустить собственный сервис, используя указанный образ.
Таким образом, проблемы, вызванные различиями в среде выполнения программного обеспечения, могут быть эффективно решены, аBuild once, Run anywhereЦель.
впредьDocker в основном является синонимом контейнера и стал лидером эпохи контейнеров.
2014 год
В 2014 году Google запустил Kubernetes, чтобы решить проблему оркестрации контейнеров Docker в крупномасштабных сценариях.
Это был логичный выбор в то время, когда Docker был самой популярной и единственной средой выполнения.Kubernetes привлек большое количество пользователей поддержкой среды выполнения контейнера Docker.
В то же время Google и сообщество Kubernetes также тесно сотрудничают с Docker, размещая в своем официальном блоге следующий контент:
Мы продолжим расширять набор функций, сотрудничая с сообществом Docker, чтобы включить в Docker лучшие идеи Kubernetes.
An update on container support on Google Cloud Platform
Kubernetes — это менеджер контейнеров Docker с открытым исходным кодом, основанный на многолетнем опыте Google в использовании контейнеров в масштабах Интернета. Docker предоставляет полный стек контейнеров, который запланирован в Kubernetes, и стремится переместить критически важные возможности вверх по течению и согласовать платформу Kubernetes с Libswarm.
Welcome Microsoft, RedHat, IBM, Docker and more to the Kubernetes community
И опубликованная в том же месяце речь на DockerCon, он представил Kubernetes и получил широкое внимание.
В настоящее времяDocker Inc. также выпустила свой инструмент оркестровки контейнеров, libswarm (позже swarmkit).
2015
2015 OCI (открытая контейнерная инициатива) была основана контейнерами Docker и другими лидерами отрасли (это также проект Фонда Linux)
OCI в основном включает две спецификации:
-
Спецификация времени выполнения (runtime-spec): как запустить пакет в указанной файловой системе, когда контейнер запущен.
-
Спецификация образа контейнера (image-spec): как создать пакет файловой системы OCI, запускаемый во время выполнения
Docker предлагает собственный формат образа контейнера и среду выполнения (текущий запуск) были переданы OCI в качестве первоначальной работы.
2016
В июне 2016 года был выпущен Docker v1.12, в которомМультиконтейнер Docker's Multi-host, Docker Swarm.Также следует отметить, что принципы разработки Docker v1.12:
- Простой, но мощный
- Устойчивый
- Безопасный
- Дополнительные функции и обратная совместимость
Таким образом, вы можете выбрать, нужно ли вам использовать Docker Swarm через настройку, не беспокоясь о каких-либо побочных эффектах.
В декабре 2016 года,Kubernetes выпускает CRI (интерфейс выполнения контейнеров), отчасти это связано с тем, что Kubernetes пытается поддерживать другой проект среды выполнения контейнеров, rkt, возглавляемый CoreOS, но ему необходимо написать много совместимого кода и т. д. Чтобы избежать работы по обслуживанию, связанной с последующей совместимостью с другими средами выполнения. , унифицированный интерфейс CRI Kubernetes, любая среда выполнения, поддерживающая CRI, может быть напрямую использована в качестве базовой среды выполнения Kubernetes;
Конечно,Kubernetes также постепенно выиграл войну оркестровки контейнеров в 2016 году.
2017
2017, сам Docker от v1.11 с начала внедренияСреда выполнения контейнера containerdпожертвовалCNCF
В 2017 году сетевой компонент Docker libnetwork добавил поддержку CNI; в то же время черезИспользуйте код, связанный с ipvs, предоставленный Docker для Docker Swarm., также реализует балансировку нагрузки службы на основе IPvs в Kubernetes. Однако связанные зависимости были удалены в версии 1.18.
В ноябре того же года,Добавлена поддержка контейнера в Kubernetes
2018
В 2018 годуИнтеграция containerd для Kubernetes, официально GA
Архитектура предыдущей версии:
Новая архитектура:
2019
В 2019 году еще один упомянутый выше проект среды выполнения контейнеров rkt был заархивирован CNCF и прекратил свою миссию; В 2019 году Mirantis приобрела корпоративные услуги Docker.
2020
Возвращаясь к этому году, Docker в основном неправильно понимают по двум причинам:
- Docker Inc. пересматривает цены и TOS DockerHub. Внутренние дебаты в основном касаются вопросов соответствия (но они были введены в заблуждение главной партией, и паника неизбежна);
- Kubernetes объявил о начале обратного отсчета до отказа от поддержки dockershim, который ошибочно считал, что Docker больше нельзя использовать;
инструкция
Что касается пересмотренных цен и TOS DockerHub, я не буду здесь больше говорить, ведь DockerHub по-прежнему успешно используется, что далеко от того, о чем заявляли заголовки.
Сосредоточьтесь на втором.
Kubernetes выбрал Docker в качестве среды выполнения своего контейнера, потому что в то время у него не было другого выбора, и выбор Docker привлек к нему много пользователей. Итак, с самого начала он обеспечивал встроенную поддержку среды выполнения Docker.
На самом деле, когда создавался Docker, он не учитывал функцию «оркестровки» и, конечно же, не учитывал существование Kubernetes (потому что его в то время не существовало).
dockershimЭто всегда была совместимая программа, поддерживаемая сообществом Kubernetes, чтобы сделать Docker поддерживаемой средой выполнения контейнеров.Так называемый отказ на этот раз заключается просто в том, что Kubernetes откажется от поддержки сопровождения докеров в текущем репозитории кода Kubernetes.Таким образом, он может нести ответственность только за поддержание своего CRI, как и планировалось в начале, а любую среду выполнения, совместимую с CRI, можно использовать в качестве среды выполнения Kubernetes.
Когда в Kubernetes предложили CRI, предлагалось реализовать его в Docker. Но этот подход также приносит проблему, даже если Docker реализует CRI, это все равно не чистая среда выполнения контейнера, она сама содержит множество функций, которыми не обладает «чистая базовая среда выполнения контейнера».
Итак, позжеПроект containerd, отпочковавшийся от Docker, стал низкоуровневой средой выполнения контейнеров, которая лучше подходит для среды выполнения контейнеров Kubernetes.
Docker использует containerd в качестве базовой среды выполнения контейнера, а многие поставщики облачных услуг и компании используют containerd в качестве среды выполнения Kubernetes в производственных средах, что также проверяет стабильность containerd со стороны.
Сообщества Kubernetes и Docker теперь считают, что containerd достаточно зрел, чтобы его можно было использовать напрямую в качестве среды выполнения Kubernetes без необходимости использовать Docker в качестве среды выполнения Kubernetes через dockershim. Это также знаменует собой окончательное выполнение обещания Docker предоставить современную среду выполнения контейнеров для Kubernetes.
В таком случае какое направление после ключа докершим? Dockerhim в репозитории Kubernetes будет удален в будущем выпуске, но Mirantis сотрудничает с Docker, чтобы совместно поддерживать компонент dockerhim в будущем, чтобы поддерживать Docker в качестве среды выполнения контейнера для Kubernetes.
В противном случае, если вы используете Docker Engine с открытым исходным кодом, проект dockershim будет доступен как компонент с открытым исходным кодом, и вы сможете продолжать использовать его с Kubernetes; для этого потребуется лишь небольшое изменение конфигурации, которое мы документ.
Корпорация Мирантис объявляет о техническом обслуживании докершим
Q&A
Q: Kubernetes отказаться от обслуживания dockershi, в конце концов, какой эффект? A: Для обычных пользователей не имеет никакого эффекта; для инженеров, разрабатывающих Kubernetes, не имеет большого значения; для администраторов кластера необходимо учитывать, хотите ли вы в будущем выпуске контейнера среды выполнения, обновленного для поддержки среды выполнения CRI, такой как containerd. Конечно, если вы не хотите переключать контейнер для запуска, это не имеет значения, будущее компании Mirantis будет Docker и совместно защищать докершим, а также доступны компоненты с открытым исходным кодом.
В: Docker недоступен? О: Docker по-прежнему остается лучшим контейнерным инструментом для локальной разработки или развертывания на одном компьютере.Он обеспечивает более удобный пользовательский интерфейс и обладает широкими возможностями. В настоящее время Docker наладил сотрудничество с AWS, которое можно напрямую интегрировать с AWS через интерфейс командной строки Docker. Кроме того, Docker по-прежнему можно использовать в качестве среды выполнения контейнера для Kubernetes, и его поддержка не была прекращена немедленно.
В: Я слышал, что Подман может воспользоваться возможностью занять позицию? О: Я слишком много думаю. Podman также не соответствует требованиям CRI и не считается средой выполнения контейнера Kubernetes. Лично я время от времени использую Podman, и мы также обеспечиваем поддержку Podman в проекте KIND, но, честно говоря, это всего лишь инструмент командной строки, и в некоторых случаях он может быть полезен, например, если ваш контейнер Kubernetes работает при использовании cri-o. , его можно использовать для локальной отладки.
Суммировать
В этой статье в основном представлен процесс разработки Docker и Kubernetes, а также поясняется, что на этот раз Kubernetes просто прекратил поддержку компонента dockerhim. Более рекомендуемой средой выполнения Kubernetes в будущем является низкоуровневая среда выполнения, такая как CRI-совместимый containerd.
Mirantis будет поддерживать dockershi с Docker и предоставлять его как компонент с открытым исходным кодом.
Docker остается лучшим инструментом для локальной разработки, тестирования и развертывания.
Добро пожаловать, чтобы подписаться на мой публичный аккаунт статьи [MoeLove]