GNU/Linux >> Linux の 問題 >  >> Ubuntu

ポッドマンチュートリアル-初心者のための基本

はじめに

Podmanは、LinuxでOCIコンテナを実行および管理するためのコンテナエンジンです。 RedHatは、すべてを開始した有名なコンテナー管理プラットフォームであるDockerの直接の代替手段として開発しています。

このチュートリアルは、コマンド構文を説明し、Podmanコマンドの実際の使用例を提供することで、Podmanがどのように機能するかを理解するのに役立ちます。

前提条件

  • コマンドライン/ターミナルウィンドウへのアクセス。
  • Podmanがインストールおよび構成されています(macOSにPodmanをインストールする方法またはUbuntuにPodmanをインストールする方法を参照してください)。

Podmanコマンド

Podmanのコマンド構文はDockerと非常によく似ています。メインのpodman コマンドの後にPodman管理コマンドとオプションが続きます:

podman [command] [options]

以下は、すべてのPodmanコマンドを含む表です。

コマンド 説明
attach  名前またはIDを使用して実行中のコンテナにアタッチします。
auto-update コンテナの自動更新ポリシーを使用してコンテナを更新します。
build  Containerfilesの手順を使用してイメージを作成します。
commit  コンテナに加えられた変更を反映した新しい画像を作成します。
container  ポッドマンコンテナを管理します。
cp  ファイル/ディレクトリをコンテナからローカルファイルシステムに、またはその逆にコピーします。
create  コンテナを起動せずに作成します。
diff  コンテナまたは画像に加えられた変更を表示します。
events  ポッドマンイベントを表示します。
exec  実行中のコンテナ内でプロセスを実行します。
export  コンテナのファイルシステムの内容を含むtarアーカイブを作成します。
generate  コンテナ、ボリューム、またはポッドに基づいて構造化された出力を作成します。
healthcheck  コンテナのヘルスチェックを管理します。
history  画像の履歴を表示します。
image  画像を管理します。
image  ローカルストレージで利用可能な画像を一覧表示します。
import  ファイルシステムイメージのtarballをインポートします。
info  ポッドマンシステム情報を表示します。
init  コンテナを初期化します。
inspect  コンテナまたはイメージの構成を表示します。
kill  コンテナを強制終了します。
load  コンテナアーカイブで利用可能な画像を読み込みます。
login  コンテナレジストリのログイン。
logout  コンテナレジストリからログアウトします。
logs  コンテナログを表示します。
machine  ポッドマンVMを管理します。
manifest  マニフェストリストと画像インデックスを作成および管理します。
mount  コンテナのルートファイルシステムをマウントするか、現在マウントされているコンテナを一覧表示します。
network  ポッドマンネットワークを管理します。
pause  コンテナプロセスを一時停止します。
play  コンテナ、ボリューム、またはポッドを再生します。
pod  ポッドマンポッドを管理します。
ポート ポートマッピングを一覧表示するか、コンテナのコンテナ固有のマッピングを一覧表示します。
ps  実行中のコンテナを一覧表示します。
pull  レジストリからローカルストレージに画像をコピーします。
push  ローカルマシンから指定された宛先に画像をプッシュします。
rename  コンテナの名前を変更します。
restart  コンテナを再起動します。
rm  コンテナを削除します。
rmi  ローカルストレージから画像を削除します。
run  コンテナでコマンドを実行します。
save  画像をローカルファイルに保存します。
search  レジストリで画像を探します。
secret  シークレットを操作します。
start  コンテナを起動します。
stats  リソース使用統計を表示します。
stop  コンテナを停止します。
system  ポッドマンシステムを管理します。
tag  ローカル画像に名前を割り当てます。
top  コンテナで実行されているプロセスを表示します。
unmount  コンテナのルートファイルシステムをアンマウントします。
unpause  コンテナプロセスの一時停止を解除します。
unshare  新しいユーザー名前空間でプロセスを起動します。
untag  ローカル画像からタグを削除します。
version  バージョン情報を表示します。
volume  コンテナボリュームを管理します。
wait  コンテナが停止するのを待ちます。

Podmanチュートリアル

Podmanは主にコンテナエンジンですが、OCIコンテナを作成して実行するように設計されていますが、ユーザーは podmanを使用することもできます。 コンテナイメージを管理するコマンド。

次のセクションでは、Podmanを使用して画像、コンテナ、ポッドを作成および操作する方法について説明します。

Podmanヘルプマニュアルの表示

コマンドラインを使用して、Podmanのドキュメントをすばやく参照できます。利用可能なpodmanを表示するには 端末のコマンドに次のように入力します:

podman help

Podmanの完全なマニュアルを表示するには、manコマンドを使用します。

Podman画像

Podmanでのイメージの構築と管理は、低レベルのcoreutilsインターフェースを使用するイメージ構築ツールであるBuildahを使用して実行されます。ユーザーがpodmanを実行したとき 画像に関連するコマンドで、PodmanはBuildahを呼び出してアクションを実行します。

次のセクションでは、いくつかの重要な画像管理コマンドについて説明します。

画像の検索

searchを使用して、利用可能な画像のレジストリを検索します 指図。

podman search [search-term]

--limitを使用して結果の数を制限します オプション。たとえば、「centos」に対して3つの結果を生成するには 検索語、タイプ:

podman search --limit 3 centos

画像の検査

Podmanイメージをプルする前に、それを検査することをお勧めします。 podman inspectを使用します コマンドを実行すると、システムはファイルサイズ、アーキテクチャ、OSなどの画像メタデータを出力します。

podman inspect [repository or image ID]

--formatを使用します podman inspectのオプション 特定のメタデータを取得するコマンド。次の例では、コマンドは画像の説明のみを返します。

podman inspect --format=’{{.Labels.description}}’ [image ID]

画像のダウンロード

オンラインリポジトリからの画像のプルは、 podman pullを使用して実行されます 指図。構文は次のとおりです。

podman pull [registry/image]

この例は、 fedoraproject.orgから画像をプルする方法を示しています。 レジストリ:

実行中の画像

podman runを使用してPodmanイメージを実行します

podman run [image]

画像がローカルで利用できない場合、Podmanは画像をオンラインレジストリから取得し、コンテナとして実行します。

画像の表示

podman images サブコマンドは、ローカルで利用可能な画像を一覧表示するために使用されます:

podman images

オプションを使用して、検索結果を絞り込みます。 --filter オプションは、指定した条件に基づいて出力をフィルタリングします。たとえば、次のコマンドは、 "redhat"を含むすべての画像を検索します。 名前で:

podman images --filter reference=redhat

カスタムイメージの作成

Podmanでカスタムイメージを作成するには、dockerfileまたはcontainerfileが必要です。これらのファイルには、Buildahツールがイメージを作成するために使用する命令が含まれています。

ファイルのビルドは、 podman buildを使用して実行されます 指図。たとえば、命令スクリプトを含むディレクトリからイメージを作成するには、次のコマンドを実行します。

podman build .

Buildahは、必要なファイルコンテキストを収集し、イメージを構築します。

画像の削除

podman rmi コマンドは、ローカルストレージからイメージを削除するために使用されます。 Podmanイメージを削除する前に、関連するすべてのコンテナが停止され、削除されていることを確認してください。

podman rmiを使用して画像を削除します コマンドの後に画像名またはIDを続けます:

podman rmi [image-name-or-id]

出力は、画像が削除されたことを確認します。

Podmanコンテナ

コンテナの作成と管理はPodmanの主な機能です。以下のセクションで、最も一般的なコンテナ管理コマンドのいくつかを見つけてください。

実行中のコンテナ

podman run コマンドには、dockerrunと同じ機能があります。コマンドに続くオプションは、実行されているコンテナーのタイプによって異なります。次の例は、 httpdの実行を示しています。 たとえば、 docker.ioで利用可能な画像を使用します リポジトリ:

podman run -p 8080:80/tcp docker.io/library/httpd

コマンドはコンテナを実行し、そのコマンドプロンプトを表示します。

Ctrl + C を押して、コンテナプロンプトを終了します 。このコマンドはコンテナを終了します。

バックグラウンドでコンテナを実行する

コンテナプロンプトをスキップしてコンテナをバックグラウンドで実行するには、次の構文を使用します。

podman run -dt -p 8080:80/tcp docker.io/library/httpd

コンテナが正常に起動すると、コマンドの出力にコンテナの長いIDが表示されます。

コンテナへの接続

podman attachを使用してコンテナに入る コマンド:

podman attach [container-name-or-id]

この例は、コンテナIDを使用して実行中のAlpineLinuxコンテナに接続する方法を示しています。

実行中のコンテナの表示

psで現在実行中のコンテナを表示する コマンド:

podman ps

コマンド出力には、実行中のコンテナーに関する基本情報を含むリストが表示されます。

閉じた後のコンテナの自動削除

--rmを使用します podman runのオプション コンテナを自動的に削除するには:

podman run --rm -dt -p 8080:80/tcp alpine:latest

コンテナの起動と停止

startを使用する およびstop 既存のコンテナを開始および停止するコマンド。

podman start [container-id]

出力にはコンテナIDが表示されます。

podman stop [container-id]

停止したコンテナのIDが表示されます。

コンテナへの名前の割り当て

オプション--nameを使用して、実行中のコンテナに名前を付けることができます podman runを使用 指図。たとえば、Alpine Linuxコンテナに名前を付けるには、次のコマンドを使用します。

podman run --name AlpineTest -dt -p 8080:80/tcp alpine:latest

下の画像は、 podman runを示しています 成功しました。ポッドマンps コマンドは実行中のPodmanコンテナを一覧表示し、名前は NAMESに表示されます 列。

コンテナログの表示

podman logsを使用して、実行時にコンテナログを表示します コマンド。

podman logs [container-name-or-id]

-lを使用します 最新のコンテナのログを表示するフラグ。

コンテナの削除

Podmanコンテナを削除するには、まずコンテナが停止していることを確認してください。次に、 podman rmを使用します コマンドの後にコンテナの名前またはIDが続きます。

podman rm [container-name-or-id]

以下の例は、 AlpineTestの削除を示しています。 コンテナ。

実行中または使用できないコンテナを削除するには、 -fを追加します オプション。

podman rm -f [container-name-or-id]

複数のコンテナを一度に削除するには、コンテナのIDをスペースで区切ってリストします。

podman rm [container-1-id container-2-id container-3-id]

Podmanポッド

ポッドは、リソースを共有するコンテナーのグループです。 Podmanポッドは、PodmanとDockerを区別する機能です。次のセクションでは、Podmanでの一般的なポッド操作のいくつかを説明します。

ポッドの一覧表示

以下のコマンドを使用して、システムで使用可能なすべてのポッドを一覧表示します。

podman pod ls

リストには、ポッドID、名前、ステータス、作成時刻、インフラID、およびポッドに含まれるコンテナの数が表示されます。

空のポッドの作成

次の構文を使用して、Podmanで空のポッドを作成します。

podman pod create

出力には、新しく作成されたポッドのIDが表示されます。

ポッドへのコンテナの追加

コンテナをポッドに追加するには、 --podを使用します docker runのラベル

podman run [options] --pod [pod-name-or-id] [image]

以下の例では、AlpineLinuxコンテナがID e06ed089b454でポッドに割り当てられています。 :

コンテナを使用したポッドの作成

Podmanは、コンテナを作成して、1回の podman runで新しいポッドに追加できます。 指図。構文には、 --podが含まれます ラベル:

podman run [options] --pod new:[pod-name] [image]

以下の例では、 alpine:latestを使用してコンテナーを実行しています。 画像を追加して、 AlpineTestという名前の新しいポッドに追加します :

podman pod ls コマンド出力には、2つのコンテナを持つ新しいポッドが表示されます。

ポッドの開始、停止、削除

次のコマンドを使用してポッドを起動します。

podman pod start [pod-name-or-id]

ポッドを停止するには、次のコマンドを実行します:

podman pod stop [pod-name-or-id]

停止したポッドとそのコンテナを削除するには、次を使用します。

podman pod rm [pod-name-or-id]

実行中のコンテナを停止して削除してからポッドを削除するには、 -fを使用します オプション:

podman pod rm -f [pod-name-or-id]

1つのコマンドで停止した複数のポッドを削除するには、ポッドIDをスペースで区切ってリストします。

podman pod rm -f [pod1-id pod2-id pod3-id]

潜在的なPodmanの問題とそのトラブルシューティング方法

このセクションでは、Podmanの一般的な問題をいくつかリストし、解決策を提供します。

特権ポートを公開できません

Podmanを使用すると、root以外のユーザーがコンテナを実行できます。ただし、非特権ポートへの転送のみに制限されています。 root以外のユーザーとして特権ポートに転送しようとすると、次のエラーが発生します。

この問題の解決策は、非特権ポートを選択するか、sudoを使用してコマンドを実行することです。

podman検索の問題

もう1つの一般的な問題は、podman searchです。 空の出力を返すコマンド。

この問題は通常、/etc/containers/registries.confに関連しています。 ファイル。テキストエディタでファイルを開きます:

sudo nano /etc/containers/registries.conf

ファイルの一番下までスクロールして、Podmanに検索するレジストリがあることを確認します。

ファイルにレジストリがリストされていない場合は、次の構文を使用して、RedHat、Fedora、Dockerなどの一般的なレジストリを追加できます。

unqualified-search-registries=["registry.access.redhat.com", "registry.fedoraproject.org", "docker.io"]

ファイルを保存します。 podman search リストには、登録されたオンラインレジストリの結果を入力する必要があります。

エラー:無効な構成が提供されました

コンテナをポッドに追加すると、次のメッセージが表示される場合があります。

Error: invalid config provided: published or exposed ports must be defined when the pod is created: network cannot be configured when it is shared with a pod

この問題は、ポッドの作成時に定義されていないポートを持つコンテナーを追加しようとしたときに発生します。現在、Podmanはこれを許可していません。


Ubuntu
  1. PythonSciPyチュートリアル-初心者向けガイド

  2. 初心者向けのLinuxcdコマンドチュートリアル(8例)

  3. 初心者向けのLinux日付コマンドチュートリアル(8例)

  1. Jenkinsチュートリアル:初心者向けの基本

  2. 初心者向けのNetplanネットワーク構成チュートリアル

  3. 初心者向けのLinux通信コマンドチュートリアル(5例)

  1. 初心者向けのLinuxdfコマンドチュートリアル(8例)

  2. 初心者向けのLinuxduコマンドチュートリアル(10例)

  3. 初心者向けのLinuxechoコマンドチュートリアル(5つの例)