ウェブサイト検索

Ubuntu 20.04にPodman(Dockerの代替)をインストールして使う方法


Ubuntu 20.04にPodman(Dockerの代替)をインストールして使う方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
  • Ubuntu 20.04 (フォーカルフォッサ)

このページで

  1. 前提条件
  2. Ubuntu 20.04にPodmanをインストールする
  3. 新しいユーザーを作成し、hello-worldコンテナを実行する
  4. Podmanの基本使用法
  5. 結論

Podmanは、コンテナー、イメージ、ボリューム、ポッド(コンテナーのグループ)を管理するためのオープンソースツールです。コンテナーのライフサイクルを管理するためにlibpodライブラリAPIを使用し、OCI(Open Container Initiative)やDockerイメージなどの複数のコンテナーイメージフォーマットをサポートしています。

PodmanはOCI(Open Container Initiative)準拠のコンテナエンジンです。Docker CLIインターフェースと互換性があり、root権限なしでコンテナを実行できる(rootless)ようになっています。PodmanはRed Hat Enterprise Linuxの一部としてリリースされ、機能の迅速な実験と開発を可能にする次世代のLinuxコンテナツールとして設計されています。

このチュートリアルでは、Ubuntu 20.04 システムに Podman をインストールする方法を学びます。Podman をインストールし、Docker コンテナ、イメージ、およびボリュームを管理するための Podman の基本的な使い方を学びます。

前提条件

  • Ubuntu 20.04サーバー - すべてのパッケージが最新のバージョンであることを確認し、非推奨の依存関係を排除して、インストール中にエラーが発生しないようにしてください。
  • ルート権限を持ったユーザー、または ルートユーザー - 新しいパッケージをインストールし、システム全体の設定を変更するために。

Ubuntu 20.04にPodmanをインストールする

最初に、Ubuntu 20.04システムにpodmanをインストールするためのサードパーティリポジトリとキーを追加します。

1. '/etc/os-release'ファイルの環境変数をエクスポートするために、次のコマンドを実行してください。

. /etc/os-release

2. 下記のコマンドを使用して、安定したリリースのpodmanリポジトリを追加し、GPGキーをシステムに追加します。

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add -

3. Ubuntuリポジトリを更新/リフレッシュし、すべてのパッケージを最新バージョンにアップグレードします。

sudo apt update
sudo apt -y upgrade

4. その後、以下のaptコマンドを使用してpodmanをインストールします。

sudo apt install podman

「y」を入力して「Enter」を押してインストールを続行してください。

5. インストールが完了したら、次のコマンドを使用して podman のバージョンを確認します。

podman version

以下は、あなたが得ることになる類似の出力です。

ご覧の通り、Linuxアーキテクチャamd64(64ビット)用にGo 1.16でコンパイルされたpodman v3.3.1をインストールしています。

新しいユーザーを作成し、hello-worldコンテナを実行する

Podmanは、ルート権限なしでユーザーの下でコンテナを実行することを可能にします。この段階では、新しいユーザーを追加し、Dockerイメージに基づいてコンテナ「hello-world」を実行します。

1. 次のコマンドを実行して新しいユーザー「johndoe」を追加します。

useradd -m -s /bin/bash johndoe
passwd johndoe

ユーザー 'johndoe' の新しいパスワードを入力してください。

次に、ユーザー 'johndoe' としてログインし、Docker イメージ 'hello-world' に基づいてコンテナを実行します。

johndoeとしてログインします。

su - johndoe

Podmanコマンドを使用して、Dockerイメージ「hello-world」に基づいて新しいコンテナを実行します。

podman run hello-world

使用するコンテナレジストリを尋ねられますので、'docker.io' コンテナレジストリを選択してください。そうすると、以下のような出力が表示されます。

3. ローカルマシン上のコンテナと画像を確認するには、以下のコマンドを実行してください。

podman ps -a
podman images

新しいコンテナが作成され、現在のステータスは「Exited」です。このコンテナは「hello-world」Dockerイメージに基づいています。

Podmanの基本使用法

このガイドを使えば、ポッドマンを使用してコンテナ、イメージ、およびボリュームを管理する方法を学ぶことができます。コンテナを管理するためのポッドマンの基本コマンドを学び、このガイドで使用するコマンドはDocker CLIコマンドと100%同じです。

1. Podmanに互換性のあるコンテナ画像を見つけるには、以下のpodmanコマンドを実行してください。

podman search nginx

そして、デフォルトのDockerイメージレジストリとQuayイメージレジストリからのコンテナイメージのリストが表示されます。

次のpodmanコマンドを使って、Dockerレジストリからコンテナイメージ『nginx』を選択し、ローカルマシンにダウンロードしてください。

podman pull nginx:alpine

'docker.io'を選択すると、Nginxコンテナイメージのダウンロードプロセスが開始されます。

2. ローカルマシンにある利用可能なコンテナイメージを確認するには、以下のpodmanコマンドを実行してください。

podman images

そして、hello-world と nginx の2つのイメージが表示されます。

3. 次に、イメージnginx:alpineに基づいて新しいコンテナを起動して実行するには、以下のようにrunオプションを使用してpodmanコマンドを実行します。

podman run -it --rm -d -p 8080:80 --name web nginx:alpine

知っておくべきいくつかの選択肢:

  • -i または --interactive - 添付されていなくてもコンテナのSTDINを開いたままにします。
  • -t または --tty は、あなたの端末とコンテナのSTDINおよびSTDOUTを接続する擬似端末を割り当てます。
  • --rm - コンテナが終了または停止したときに、コンテナを自動的に削除します。
  • -d - コンテナをバックグラウンドで実行し、実行後にコンテナをデタッチします。
  • -p 8080:80 - コンテナとホストシステム間のポートをマップします。コンテナのポート「80」はホストシステムのポート「8080」にマッピングされます。
  • --name web - 新しいコンテナ名を 'web' に指定します。
  • nginx:alpine - 我々が使用するイメージは'nginx:alpine'です。

実行中のコンテナのランダムな文字列と番号が表示されます。以下のpodmanコマンドを使用して、実行中のコンテナを確認してください。

podman ps

出力は以下のようになります。

コンテナの状態は「起動中」で、ホストマシンのTCPポート「8080」を公開しています。

ウェブブラウザを開き、以下のポート「8080」を持つサーバーIPアドレスにアクセスしてください。

http://192.168.1.15:8080/

そして、あなたはnginxコンテナのデフォルトの「index.html」の年齢を見ることができます。

4. さらに、以下のようにして 'logs' オプションを使用してコンテナのログを確認できます。

podman logs web

または、次のように--tailオプションを指定して、コンテナログの最後の行数を指定することもできます。

podman logs --tail 10 web

5. では、以下のように podman オプションの「stop」を使用して、実行中のコンテナを停止できます。

podman stop web

あなたのコンテナ「web」は停止されます。以下のコマンドを使って確認してください。

podman ps
podman ps -a

そして、以下のような出力が得られるでしょう。

コンテナ「web」は停止され、自動的に削除されました。これは、あなたがpodmanコマンドでオプション「--rm」を使用しているためです。

次に、カスタムボリュームを使用して新しいコンテナのデフォルトの「index.html」を変更する方法を学びます。

以下のコマンドを使用して新しいディレクトリ「~/data」と「index.html」ファイルを作成します。

mkdir -p ~/data/
nano ~/data/index.html

以下のHTMLスクリプトをコピーして貼り付けてください。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Welcome to Container Nginx</title>
</head>
<body>
  <h2>Hello from Nginx container - Managed with Podman</h2>
</body>
</html>

「Ctrl+x」ボタンを押し、「y」を入力してから、「Enter」を押して設定を保存し、終了します。

次に、カスタムボリュームを使用して新しいコンテナを実行するために、次のpodmanコマンドを実行してください。

podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

知っておくべきオプションがあります。

  • -v - コンテナのボリュームを指定します。'~/data' ディレクトリは新しいコンテナのディレクトリ '/usr/share/nginx/html' にマウントされます。

次に、実行中のコンテナを確認するために以下のコマンドを実行してください。

podman ps

ステータス「アップ」に新しいコンテナ「web」が表示されます。

次に、ウェブブラウザを開き、サーバーのIPアドレスにポート「8080」を入力します。

http://192.168.1.15:8080/

そして、あなたが作成したカスタム index.html ページが上部に表示され、これは '~/data' ディレクトリが 'web' コンテナにマウントされていることを意味します。

次に、'exec'オプションを使用して実行中のコンテナにログインし、'sh'シェルを実行できます。

次のコマンドを使用して、コンテナ「web」が実行中であることを確認してください。

podman ps

次に、以下のpodmanコマンドを実行してコンテナ「web」にログインします。

podman exec -it web /bin/sh

コンテナ「web」のホスト名を確認してください。

hostname

コンテナ「web」のIPアドレスとルーティングテーブルを確認してください。

ip a
route -n

今、コンテナ'web'からログアウトするには'exit'と入力してください。

8. 次のコマンドを使用して環境をクリーンアップしてください。

以下のpodmanコマンドを使用して、コンテナ「web」を停止します。

podman stop web

以下のpodmanコマンドを使用して、ステータスが「Exited」のコンテナをすべて削除します。

podman rm $(podman ps --filter "status=exited" -q)

結論

おめでとうございます!Ubuntu 20.04システムにPodmanを正常にインストールしました。また、コンテナイメージのダウンロード、コンテナの実行、コンテナの状態、ログの確認、ボリュームの管理のためのPodmanの基本的な使用法を学びました。次のステップでは、アプリケーションをコンテナレジストリにプッシュ/アップロードするために、OCI仕様に基づいたカスタムイメージを作成してみてください。

関連記事: