Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Пришло время обновить свой контейнерный движок! Менеджер контейнеров Podman обеспечивает гибкое управление слоями образов и полную совместимость с Kubernetes, а также дает возможность пользователям без прав администратора создавать, запускать непривилегированные контейнеры и управлять ими. OCI-совместимая поддержка Docker API позволяет перевести существующие контейнеры на Podman, не ломая свои скрипты и не меняя привычного порядка работы. «Podman в действии» познакомит вас с менеджером контейнеров Podman. Простые объяснения и примеры позволят быстро разобраться с тем, что такое контейнеры, как они работают и как управлять ими. Вы получите глубокие знания об используемых Podman компонентах Linux и даже узнаете больше о Docker. Особенно ценны соображения автора Дэна Уолша по поводу безопасности контейнеров. Для разработчиков и системных администраторов, имеющих опыт работы с Linux и Docker.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 358
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчик Д. Иванов
Дэниэл Уолш
Podman в действии. — СПб.: Питер, 2024.
ISBN 978-5-4461-2111-3
© ООО Издательство "Питер", 2024
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
В память о моей матери, Джоан П. Уолш
Я работаю в области компьютерной безопасности почти сорок лет, а в последние двадцать сосредоточился на контейнерных технологиях. Когда около десяти лет назад появился Docker, он вызвал революцию в распространении и запуске приложений в интернете. Используя Docker, я думал о том, что его можно было бы спроектировать лучше. Работа с демоном, запускаемым с правами root, а затем добавление все новых и новых демонов казались мне неправильным подходом. По моему мнению, вместо этого следовало бы использовать низкоуровневые концепции операционных систем и сделать инструмент, который запускал бы те же контейнерные приложения таким же образом, но более безопасно и требуя меньшего количества привилегий. Поэтому моя команда в Red Hat задалась целью создать инструменты, которые помогут разработчикам и администраторам запускать контейнеры самым безопасным способом. В результате этой работы появился Podman.
В начале 2000-х я начал вести блог на такие темы, как SELinux, и с тех пор пишу разные статьи. За эти годы я написал сотни статей о контейнерах и безопасности, но мне хотелось объединить все свои идеи и описать технологию Podman в одной книге, к которой я мог бы отсылать пользователей и заказчиков.
В этой книге рассказывается о Podman и о том, как с ним работать. Кроме того, она глубоко погружает читателя в изучение технологии и различных частей операционной системы Linux, которыми мы пользуемся. Поскольку я являюсь инженером по безопасности, я также посвятил пару глав описанию безопасности контейнеров. Прочитав эту книгу, вы станете лучше понимать, что такое контейнеры, как они действуют и как применять различные функции Podman. Вы даже узнаете гораздо больше о Docker. Так как популярность Podman растет и он все шире внедряется в инфраструктуру, эта книга станет для вас полезным справочником, который стоит держать под рукой.
Я выражаю благодарность всем людям, которые помогли мне написать эту книгу. В их числе члены команды Podman — они написали статьи, послужившие мне подспорьем в понимании технологий, в которых я не до конца разбирался, и помогли создать отличный продукт. Спасибо вам, Брент Боде (Brent Baude), Мэтт Хеон (Matt Heon), Валентин Ротберг (Valentin Rothberg), Джузеппе Скривано (Giuseppe Scrivano), Урваши Мохнани (Urvashi Mohnani), Налин Дахьябхай (Nalin Dahyabhai), Локеш Мандвекар (Lokesh Mandvekar), Милослав Трмач (Miloslav Trmac), Джейсон Грин (Jason Greene), Джон Хонс (Jhon Honce), Скотт Маккарти (Scott McCarty), Том Суини (Tom Sweeney), Эшли Куи (Ashley Cui), Эд Сантьяго (Ed Santiago), Крис Эвич (Chris Evich), Адитья Раджан (Aditya Rajan), Пол Холцингер (Paul Holzinger), Прити Томас (Preethi Thomas) и Чарли Доерн (Charlie Doern). Я также хочу поблагодарить бесчисленных разработчиков открытого исходного кода, которые сделали возможными Linux-контейнеры и Podman.
Я благодарю всю команду Manning, но особенно Тони Арритола (Toni Arritola). Тони научила меня, как лучше раскрыть мои идеи, и была отличным партнером в этом процессе. Ей пришлось иметь дело со мной, старым математиком, который никогда не умел писать, но она помогла этой книге увидеть свет.
Спасибо вам, мои рецензенты: Ален Ломп (Alain Lompo), Алессандро Кампеис (Alessandro Campeis), Аллан Макура (Allan Makura), Аманда Деблер (Amanda Debler), Андерс Бьёрклунд (Anders Björklund), Андреа Монакки (Andrea Monacchi), Камал Какар (Camal Cakar), Клиффорд Тёрбер (Clifford Thurber), Конор Редмонд (Conor Redmond), Дэвид Паккуд (David Paccoud), Дипак Шарма (Deepak Sharma), Федерико Кирхайс (Federico Kircheis), Франс Оилинки (Frans Oilinki), Гоутам Садасивам (Gowtham Sadasivam), Ибрагим Аккулак (Ibrahim Akkulak), Джеймс Лю (James Liu), Джеймс Ньика (James Nyika), Джереми Чен (Jeremy Chen), Кент Спилнер (Kent Spillner), Кевин Этьен (Kevin Etienne), Кирилл Ширинкин (Kirill Shirinkin), Космас Чатзимихалис (Kosmas Chatzimichalis), Кшиштоф Камычек (Krzysztof Kamyczek), Ларри Кай (Larry Cai), Майкл Брайт (Michael Bright), Младен Кнежич (Mladen Knežic´), Оливер Кортен (Oliver Korten), Ричард Майнсен (Richard Meinsen), Роман Жужа (Roman Zhuzha), Руй Лю (Rui Li), Сатадру Рой (Satadru Roy), Сын Чжин Ким (Seung-jin Kim), Симеон Лейзерзон (Simeon Leyzerzon), Симона Сгуацца (Simone Sguazza), Сайед Ахмед (Syed Ahmed), Томас Пеклак (Thomas Peklak) и Вивек Вираппан (Vivek Veerappan) — ваши предложения помогли сделать эту книгу лучше.
В книге «Podman в действии» описывается, как пользователи могут создавать, запускать контейнеры и управлять ими. При написании этой книги моей целью было объяснить, как без особых сложностей перенести полученные в Docker навыки на Podman, а также как просто использовать Podman, если вы никогда раньше не работали с контейнерными движками. «Podman в действии» научит вас использовать такие расширенные возможности, как поды (pod), и поможет вам на пути к созданию приложений, готовых к работе в Kubernetes. Наконец, «Podman в действии» расскажет все о функциях безопасности ядра Linux, которые применяются для изоляции контейнеров как от системы, так и от других контейнеров.
Книга «Podman в действии» написана для разработчиков программного обеспечения, которые хотят разобраться в том, что такое контейнеры, создавать и применять их, а также для системных администраторов, использующих контейнеры в выпускаемых продуктах. Прочитав эту книгу, вы получите более глубокое представление о том, что такое контейнеры. Для получения максимальной пользы от книги необходимо понимание процессов Linux и умение работать с его командной строкой.
Каждый, кто хочет использовать контейнеры, найдет что-то для себя в этой книге. Пользователи, хорошо знакомые с Docker, узнают о расширенных возможностях Podman, недоступных в Docker, и еще лучше разберутся в том, как работает Docker. Начинающие пользователи изучат основы работы с контейнерами и подами.
«Podman в действии» состоит из четырех частей и шести приложений.
• Часть 1 «Основы» состоит из четырех глав и знакомит читателей с Podman. В главе 1 объясняется, что делает Podman, зачем он был создан и почему он важен. В следующих двух главах рассказывается об интерфейсе командной строки и о том, как использовать тома в контейнерах. В главе 4 вводится понятие подов и объясняется, как Podman работает с ними. Здесь каждый найдет что-то полезное для себя, но если у вас большой опыт работы с Docker, вам будет достаточно лишь бегло просмотреть бо́льшую часть содержимого главы 2.
• Часть 2 «Архитектура» состоит из двух глав, в которых я глубоко погружаюсь в устройство Podman. Вы узнаете о непривилегированных (rootless) контейнерах и о том, как они работают. Прочитав эти главы, вы станете лучше понимать, что такое пользовательские пространства имен и безопасность непривилегированных контейнеров. Вы также узнаете, как настроить конфигурацию вашего Podman-окружения.
• Часть 3 «Расширенные возможности Podman» состоит из трех глав и выходит за рамки основ Podman. В главе 7 показано, как Podman может работать в продакшене благодаря интеграции с systemd. В ней рассказывается о запуске systemd внутри контейнера и о том, как использовать его в качестве менеджера контейнеров. Вы узнаете, как настроить серверы с контейнерами Podman, где systemd управляет жизненным циклом контейнера. Podman позволяет легко генерировать файлы systemd-юнитов, помогая отправить в продакшен ваши контейнеризованные приложения. В главе 8 вы узнаете, как с помощью Podman можно перенести контейнеры в Kubernetes. Podman поддерживает запуск контейнеров с помощью тех же YAML-файлов, которые использует Kubernetes, а также дает возможность генерировать YAML для Kubernetes из ваших контейнеров. В главе 9 я покажу, как Podman работает в качестве службы, обеспечивая удаленный доступ к контейнерам Podman. Использование Podman в качестве службы позволяет вам применять другие языки программирования и инструменты для управления контейнерами. Вы увидите, как docker-compose может работать с контейнерами Podman. Вы также узнаете, как использовать для взаимодействия с сервисом Podman при управлении контейнерами такие библиотеки Python, как podman-py и docker-py.
• Часть 4 «Безопасность контейнеров» состоит из двух глав, в которых речь идет о важных аспектах безопасности. В главе 10 описаны функции, используемые для обеспечения изоляции контейнеров. В этой главе анализируются такие подсистемы безопасности Linux, как SELinux, seccomp, привилегии Linux (Linux capabilities), файловые системы ядра и пространства имен (namespaces). Затем в главе 11 рассматриваются соображения безопасности, которые я считаю лучшими практиками для максимально безопасного запуска контейнеров.
Кроме того, в книге шесть приложений, посвященных связанным с Podman темам:
• В приложении A описаны все связанные с Podman инструменты, включая Buildah, Skopeo и CRI-O.
• Приложение B подробно рассматривает различные среды выполнения OCI, доступные как для Podman, так и для Docker. В нем обсуждаются runc, crun, Kata и gVisor.
• Приложение C описывает, как установить Podman на вашу локальную систему, будь то Linux, Mac или Windows.
• В приложении D рассказывается о сообществе разработчиков открытого исходного кода Podman и о том, как к нему присоединиться.
• Приложения E и F посвящены запуску Podman на компьютерах c операционными системами Mac и Windows.
Приобретая книгу «Podman в действии», вы получаете бесплатный доступ к закрытому веб-форуму издательства Manning (на английском языке), на котором можно оставлять комментарии о книге, задавать технические вопросы и получать помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу book/podman-in-action/discussion сайта https://livebook.manning.com/. Информация о форумах Manning и правилах поведения на них размещена на https://livebook.manning.com/#!/discussion.
В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.
Вы можете подписаться на Дэна Уолша (Dan Walsh) в Twitter и GitHub @rhatdan. Он регулярно ведет блог на https://www.redhat.com/sysadmin/users/dwalsh и на нескольких других сайтах. На YouTube также много видео с выступлениями Дэна.
Дэниэль Уолш (Daniel Walsh) возглавляет команду, которая создала Podman, Buildah, Skopeo, CRI-O и связанные с ними инструменты. Дэн — ведущий инженер компании Red Hat, работает там с августа 2001 года. Более 40 лет он занимается компьютерной безопасностью. Дэна иногда называют «мистер SELinux», так как он руководил разработкой SELinux в Red Hat до того, как возглавил группу, занимающуюся контейнерами. Дэн получил степень бакалавра математики в Колледже Святого Креста и степень магистра компьютерных наук в Вустерском политехническом институте. В Twitter и на GitHub его можно найти по нику @rhatdan. Вы можете написать ему по адресу [email protected].
Иллюстрация на обложке книги «Podman в действии» озаглавлена как «La vandale», или «Вандал», и позаимствована из коллекции Жака Грассе де Сен-Совера (Jacques Grasset de Saint-Sauveur), опубликованной в 1797 году. Каждая иллюстрация из коллекции тщательно прорисована и раскрашена вручную.
В те времена по одежде человека можно было легко определить, где он живет и каково его ремесло или положение в обществе. Издательство Manning отмечает изобретательность и инициативность IT-бизнеса обложками книг, которые основаны на богатом разнообразии региональной культуры многовековой давности, возвращаемой к жизни изображениями из коллекций, подобными этому.
Дмитрий Иванов — ведущий системный инженер компании КРОК, руководитель группы системных инженеров ДРПО (департамента разработки программного обеспечения). Имеет большой практический опыт работы с решениями контейнеризации и оркестрации контейнеров.
Мы выражаем огромную благодарность компании КРОК за помощь в работе над русскоязычным изданием книги и их вклад в повышение качества переводной литературы.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
В части 1 книги я познакомлю вас с несколькими способами работы с Podman из командной строки. В главе 2 объясню, как создавать контейнеры и применять их, а также как контейнеры работают с образами. Вы узнаете, в чем разница между контейнером и образом, как сохранить контейнер в образ, а затем отправить образ в реестр, чтобы им можно было поделиться с другими пользователями.
В главе 3 я ввожу понятие тома. Тома — это механизмы, которые большинство пользователей ваших контейнерных приложений используют для хранения своих данных отдельно от приложения. В первых двух главах основное внимание уделяется использованию контейнеров и образов, что очень напоминает работу контейнеров в Docker.
В главе 4 добавляется концепция подов, аналогичная подам Kubernetes, которую Docker не поддерживает. Поды предоставляют возможность совместно использовать один или несколько контейнеров в рамках одного и того же ресурса, пространства имен и ограничений безопасности. Поды позволяют писать более сложные приложения и управлять ими как единой сущностью.