А если серьезно, то у нас есть примерно год, чтобы избавиться от Docker в качестве среды исполнения контейнеров в Kubernetes. В версии 1.20 (которая выйдет уже совсем скоро) будет объявлен устаревшим Docker. А в версии 1.23 его поддержка будет удалена вовсе. Чтобы в будущем не было проблем с обновлением кластера, надо потрудиться уже сейчас.
Менять мы его будем на ContainerD, т.к. под капотом у того же Docker как раз ContainerD и лежит. Надо лишь убрать всех посредников.
Так же, как и в случае с Linux, будем считать что у нас есть только что установленный Windows Server 2019 (1809). В случае, если это именно 2019, нам вполне достаточно Server Core.
(Add-WindowsFeature Containers).RestartNeeded
Если результатом команды будет Yes, то перезагружаем компьютер.
К сожалению, на момент написания статьи (4 декабря 2019) Windows-разработчику, желающему использовать Kubernetes, не получится обойтись без Linux. Всё потому, что мастер узел Kubernetes можно установить только на Linux.
Для начала нам надо установить сам Docker. Будем считать что у нас есть только что установленная Ubuntu 18.04.
Данный проект помогает реализовать TLS подключение к Docker Remote API с аутентификацией по сертификату с проверкой отзыва клиентского сертификата.
Операционной системой на сервере является Windows Server 1803+.
Удаленное управление Docker
Для нужд удаленного управления Docker'ом, Docker умеет предоставлять веб-API.
Это API может как вовсе не требовать аутентификации (что крайне не рекомендуется), так и использовать аутентификация по сертификату.
Проблема заключается в том, что родная аутентификация по сертификату не предусматривает проверку отзыва сертификата.
А это может стать проблемой.
Сборка Docker образа
Для сборки образа нам потребуется публичный сертификат центра сертификации (ca.cer), который будет выдавать сертификаты пользователям.
Этот сертификат будет установлен в доверенные корневые центры сертификации контейнера, в котором будет запущен наш прокси.
Установка его необходима для процедуры проверки сертификата.
Очень упрощенно говоря, Docker это способ запуска приложения в такой песочнице, в какой приложение думает, что кроме него на компьютере ничего не установлено. Появился Docker в мире Linux, стал популярным и через некоторое время в мире Windows тоже захотели себе такую игрушку. Областью применения является веб и консольные приложения.
Этот пост для тех, кто далек от мира Linux, кому интересен Docker для Windows, и, тех кто по какой-то причине до сих пор не вник в эту тему.
Под управлением Windows Server появился Docker лишь в Windows Server 2016. Появился он в крайне сыром виде. Почти ничего не умел и годился разве что "для посмотреть на чудо заморское". Позже выходили Windows Server version 1709, затем 1803. Все это время Docker рос. Рос-рос и вот, наконец, вышли Windows Server 2019 и Windows Server version 1809. Docker вырос. Конечно, он еще не умеет многого из того, что хотелось бы, но, того, что уже есть, достаточно для готового решения.
Когда вы разрабатываете web-приложение, заранее зная, что оно будет находиться за балансировщиком нагрузки, следует учитывать ряд особенностей. Примером может служить запуск сайта в Docker кластере (например Swarm).