Linux
 Computer >> コンピューター >  >> システム >> Linux

LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

テクノロジーの未来を語るとき、多くのベテラン技術者が「仮想化」と「コンテナ化」こそがその進むべき道だと認識しています。これらの技術はアプリケーションやサービスのセキュリティを大幅に向上させ、スナップショットやテンプレート、柔軟なカスタマイズを可能にするツールによって簡単に管理できます。従来の「1サーバー1アプリケーション」モデルよりもはるかに効率的です。

しかし、実際にどこから手をつければよいのかは必ずしも明確ではありません。本記事では、Linux向けの優れたコンテナ化ツール「Podman」の初心者向けガイドを詳しく解説します。

コンテナとは何か?

コンテナとは、端的に言えば「アプリケーション専用の小型仮想マシン」のようなものです。仮想マシンと同じ概念の多くを共有し、同等のセキュリティと使いやすさを備えながら、はるかに軽量で、アプリケーションのイメージ化や配布が容易に行えます。実は、FlatpakやSnapの仕組みもこの考え方がベースになっています。「1つのプログラムで、互いに隔離された環境で動作する複数のアプリケーションを実行できる」という点に共通点があるのです。

Podmanとは何か?

コンテナエンジンの元祖といえばDockerですが、Podmanもそれに匹敵するコンテナエンジンであり、Dockerと非常によく似た構造を持ちながら、いくつかの重要な違いがあります。

最大の違いは、Podmanがデーモンレス(デーモン不要)である点です。Dockerは常駐デーモンに依存しますが、Podmanはデーモンなしで動作するため、root権限なしでもコンテナを実行でき、より高いセキュリティと柔軟性を実現します。ユーザーレベルで実行されるコンテナは、そのユーザーのものだけが見え、他人のコンテナにはアクセスできません。また、シンプルなアーキテクチャによりシステムリソースへの負荷も軽く、快適な操作感が得られます。

このデーモンレス設計は、ルートレスコンテナと呼ばれる概念につながります。これはセキュリティ面に焦点を当てたもので、万が一攻撃者がコンテナを侵害して脱出に成功した場合でも、取得できるのはroot権限ではなく一般ユーザー権限のみです。導入には追加のセットアップが必要で、現時点ではいくつかの制限事項もありますが、検討する価値のある強力な機能です。

Podmanのインストール

ほとんどのディストリビューションでは、Podmanは公式リポジトリに含まれているため、簡単なコマンド1つでインストールできます。

# Debian/Ubuntu
sudo apt install podman
 
# Fedora/CentOS/Red Hat
sudo dnf install podman
 
# Arch Linux
sudo pacman -S podman
 
# OpenSUSE
sudo zypper install podman
 
# Gentoo
sudo emerge app-emulation/podman

Podmanの基本的な使い方

Podmanでコンテナを起動するコマンド構文は、最初は少し複雑に感じるかもしれませんが、使っているうちにパターンが見えてきます。まずはプロジェクトが提供するサンプルコンテナを、以下のコマンドでターミナルから実行してみましょう。

podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
-e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
-e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

このコマンドを実行すると、指定されたレジストリからイメージがダウンロード(プル)され、完了時に長い英数字のIDが表示されます。このIDは、後ほど実行中のコンテナを確認する際に再び目にすることになります。

実行中のPodmanコンテナを確認するには、次のコマンドを入力します。

podman ps
LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

先ほど起動したコンテナが表示され、正常に稼働していることが確認できます。さらに、Apacheが配信しているWebページを直接チェックしたい場合は、以下のコマンドを実行します。

curl https://0.0.0.0:8080

0.0.0.0 の部分は、podman ps コマンドで表示されたIPアドレスに置き換えてください。出力はHTMLソースがそのまま表示され一見文字化けのように見えますが、先頭部分に注目するとtitleタグが確認でき、サーバーが正常に動作していることがわかります。

<title>Test Page for the Apache HTTP Server on Fedora</title>

Podmanイメージの検索と管理

Podmanの便利な機能の一つがイメージの活用です。httpd や、興味のあるその他のプログラムのイメージを自由に検索できます。

podman search CONTAINERNAME

筆者が vncserver を検索したところ、下図のように多数の候補が表示されました。選択肢が豊富なので、あとは自分の好みに合わせて選ぶだけです。

LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

イメージを取得するには、podman pull コマンドを使用します。

podman pull CONTAINERNAME

確実に目的のイメージを取得するためには、コンテナレジストリの完全なURLを指定してプルすることが推奨されます。例えば、筆者が実行したのは次のコマンドです。

podman pull docker.io/michaelaboeckler/vncserver

単に podman pull vncserver と実行すると、意図しない別のイメージが選択されてしまう可能性があるためです。

LinuxでPodmanを使いこなそう:初心者向けコンテナ入門ガイド

ローカルに保存されているイメージの一覧は、次のコマンドで確認できます。

podman images

また、コンテナを停止するには以下のコマンドを使います。

podman stop -l

-l フラグは「直前に起動した最新のコンテナ」を停止させるオプションです。すべてのコンテナを一括で停止したい場合は、代わりに -a フラグを使用してください。

ここで気づいた方もいるかもしれませんが、Podmanはdocker.ioからもコンテナイメージを取得できます。これは、PodmanのコマンドとDockerのコマンドが本質的にほぼ同一だからです。あまりに似ているため、次のように docker コマンドを podman へエイリアス(別名登録)しておくことを推奨する人もいます。

alias docker='podman'

この設定を行えば、docker と入力するたびに自動的に podman コマンドが実行されるようになります。既存のDocker用スクリプトやドキュメントをそのまま流用できるので、移行が非常にスムーズです。

ルートレスPodmanのセットアップ

ルートレスコンテナを利用できるようシステムを構成するには、いくつかの準備作業が必要です。ただし、公式のGitHubページに充実したドキュメントが用意されているので、それに沿って進めれば問題ありません。

以上、Podmanの入門ガイドでした。デーモンレスかつルートレスでコンテナを実行できる優れたツールであり、システムを軽量に、整然と、そして安全に保つことができます。コンテナ技術に興味を持った方は、ChromeOSでUbuntuコンテナを動かす方法、Dockerコンテナを別ホストへコピーする方法、Dockerコンテナのリソース制限に関するガイドなど、他の関連記事もぜひご覧ください。

  1. Android Studio完全入門ガイド:インストールからアプリ公開まで初心者向けに解説

    Android Studioは、Androidアプリ開発のためのGoogle公式統合開発環境(IDE)です。IntelliJをベースとしており、Python開発者の間で人気の高いPyCharmと同じコードエディタを採用しています。 本記事では、Android Studioを初めて使う方向けに、インストールからアプリ公開までの基本操作をわかりやすく解説します。 Android Studioのインストール手順 まずは公式サイトからダウンロードしましょう。執筆時点では、十分なテストが完了しているバージョン3.3のダウンロードをおすすめします。それ以上のバージョンには新機能が追加されていますが、多く

  2. タッチタイピング(ブラインドタッチ)入門ガイド|初心者が正しく身につける方法

    タッチタイピング(ブラインドタッチ)とは、キーボードを見ずに10本の指すべてを使って文字を入力する技術のことです。タイピング速度を大幅に向上させたいなら、ぜひ習得しておきたいスキルの一つです。この記事では、これからタッチタイピングを学ぼうとしている初心者の方向けに、基本の考え方から具体的な練習方法までをわかりやすく解説します。 タッチタイピングとは? 「タッチタイピング」という名前から、タッチスクリーン操作を連想する人もいますが、実際はまったく関係ありません。タッチタイピングとは、キーボードに目を落とさずに、すべての指で文字を打てる能力のことを指します。そのためには、各キーの位置を覚えるだけ