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

Podmanチュートリアル–Podmanを使い始める

このチュートリアルでは、LinuxオペレーティングシステムでPodmanを使い始める方法について説明します。このPodmanチュートリアルの終わりまでに、画像の検索とダウンロード、画像からの新しいコンテナの作成、コンテナの実行、コンテナの削除、コンテナからの独自の画像の作成など、Podmanの基本を学びます。

Podmanを使い始める前に、LinuxマシンにPodmanがインストールされていることを確認してください。

  • Podmanとは何ですか。LinuxにPodmanをインストールする方法

Podmanを使い始める

Podmanは、 Docker と同様のコマンドラインインターフェイス(CLI)を提供します コンテナエンジン。実際、Podmanは、Dockerが提供するDockerクライアントのドロップイン代替品になることを目指しています。

PodmanコマンドとDockerコマンドはほとんど同じです。 dockerを置き換えるだけです podmanを使用 ほとんどのdockerコマンドで。たとえば、docker run コマンドはpodman runになります およびdocker build podman buildになります など。

dockerを作成することもできます podmanのエイリアス 以下のように:

 $ alias docker =podman 

今後は、両方のdockerを使用できます およびpodman 同時にコマンド。たとえば、dockerを実行する場合 ps、自動的にpodmanを実行します psコマンド。 DockerからPodmanへの移行がはるかに簡単になりました!

1。 Podmanのヘルプを取得する

アプリケーションをインストールした後、おそらく最初にやりたいことは、ヘルプセクションを調べることです。

利用可能なサブコマンドと一般的なオプションのリストとともにPodmanヘルプマニュアルを表示するには、次のコマンドを実行します。

 $ podman --help 

attachなどのサブコマンドの使用法を学ぶには、 、単に行う:

 $ podman attach --help 

2。画像を検索

幸い、DockerとPodmanによって作成されたイメージはOCI標準と互換性があります。そのため、Podmanは Docker Hubなどのコンテナレジストリから画像をプッシュおよびプルできます。 およびQuay.io

コマンドを使用してAlpineLinuxイメージを検索してみましょう:

 $ podman search alpine 

ご覧のとおり、PodmanはDockerハブとQuayの両方からのAlpineイメージを一覧表示します。

画像をダウンロードするときに、取得したい場所から選択できます。

同様に、以下のようにArchLinuxに基づいて画像を検索できます。

 $ podman search archlinux 

DockerハブとQuayには、さまざまなタイプのイメージがたくさんあります。アプリケーションであろうとオペレーティングシステムであろうと、これらのレジストリから事前に構築されたコンテナイメージを見つけることができます。

3。画像をダウンロード

このガイドの目的のために、Redhat 8 Universal Base Image(UBI)をダウンロードします。

PodmanでRedhatイメージをダウンロードするには、次のコマンドを実行します。

 $ podman pull redhat / ubi8 

ダウンロードするコンテナレジストリを選択するように求められます。 Dockerハブを選びました。選択したレジストリの前に小さな矢印が表示されます。

?画像を選択してください:registry.fedoraproject.org/redhat/ubi8:latestregistry.access.redhat.com/redhat/ubi8:latest▸docker.io/redhat/ubi8:latestquay.io/redhat/ubi8:latest

コンテナイメージは、選択したレジストリからダウンロードされます。

✔docker.io/redhat/ ubi8:latestdocker.io/redhat/ubi8:latestをプルしようとしています...画像ソース署名を取得していますbloba50df8fd88feをコピーしていますblob1cadda38f72dをコピーしていますpre>  

使用する配布タイプに関係なく、さまざまなタイプのイメージをダウンロードして実行できます。たとえば、FedoraホストにAlpineイメージをダウンロードして使用したり、その逆を行ったりすることができます。

$podmanプルアルパイン

画像の特定のバージョンをダウンロードすることもできます。次のコマンドは、Ubuntuバージョン20.04イメージをダウンロードします。

 $ podman pull ubuntu:20.04 

Podmanをroot以外のユーザーとして使用するため、すべてのコンテナーイメージはユーザーのホームディレクトリ、つまり$HOME/.local/share/containers/storageに保存されます。 、/var/lib/containersの代わりに 。

  $ ls〜/ .local / share / containers / storage /  キャッシュlibpodマウントオーバーレイオーバーレイ-コンテナオーバーレイ-画像オーバーレイ-レイヤーstorage.locktmpuserns.lock 

4。画像を表示

ローカルにダウンロードされた画像のリストを表示するには、次のコマンドを実行します:

$podman画像

出力例:

リポジトリタグイメージID作成サイズdocker.io/library/ubuntu20.041318b700e4157日前75.2MBdocker.io/redhat/ubi8最新0ced1c7c9b2313日前234MBdocker.io/library/alpine最新d4ff818577bc6週間前5.87MB

ご覧のとおり、上記の出力には、画像をダウンロードしたリポジトリの名前、画像タグ、画像ID、画像の作成時、画像サイズが表示されます。

疑問に思っている人のために、タグ Ubuntuイメージの特定のスナップショット(例:20.04以降)を指します。 TAGは、ローカルイメージへの単なる追加の名前です。 画像ID (例:1318b700e415)はUbuntuイメージの一意の識別子です。

5。コンテナを実行する

コンテナは、イメージタグまたはイメージIDのいずれかを使用して開始できます。

タグを使用してRedhatUBIイメージで新しいコンテナを開始しましょう:

 $ podman run -it ubi8:latest 

このコマンドは、ubi8:latestを使用してRedhat8コンテナーを作成します 画像を作成し、コンテナを端末に接続して、コンテナを操作できるようにします。

ここで

  • -i :コンテナの(STDIN)の標準を取得することで、インタラクティブな接続を確立できます。
  • -t :Redhat8コンテナ内に新しい擬似端末を割り当てます。
  • ubi8:latest :TAGが「最新」のRedhat8コンテナ。

コンテナを起動すると、コンテナのシェルに自動的に移動します(コマンドプロンプト):

番号607a288c810dに気づきましたか 上記の出力で?コンテナIDです。

ヘッズアップ: コンテナIDとDockerイメージIDが異なることに注意してください

今すぐコンテナで遊び始めることができます。

コンテナを終了せずにホストのターミナルに戻るには、 CTRL+pを押します。 続いてCTRL+q

これで、コンテナから切り離され、ホストマシンのコンソールに戻ります。コンテナは引き続きバックグラウンドで実行されます。

コンテナを終了するには、「exit」と入力するだけです。 コンテナのコンソールからENTERキーを押します:

#exit 

このコマンドは、実行中のコンテナをシャットダウンします。

IMAGE IDでコンテナーを実行する場合は、前のコマンドでイメージTAG(ubi8:latest)をイメージID(0ced1c7c9b23)に置き換えるだけです。

 $ podman run -it 0ced1c7c9b23 

これにより、Redhat8コンテナが起動します。

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

デタッチされたバックグラウンドでコンテナを実行することもできます。

コンテナをデタッチモードで実行するには、-dを使用します フラグ:

 $ podman run -it -d ubi8:latest 

コンテナをデタッチモードで実行すると、Podmanは標準出力にコンテナIDを表示します。

 a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29 

コマンドを使用して実行中のコンテナーを確認しましょう:

 $ podman ps 

これで、コンテナはバックグラウンドで実行されます。

次のセクションで説明するように、アタッチできます。

7。コンテナの取り付けと取り外し

前のセクションで述べたように、 CTRL+pを押すと、実行中のコンテナから安全にデタッチできます。 続いてCTRL+q 。これにより、ホストのターミナルに戻ることができます。

コンテナに再度接続するには、最初にpodman psを使用して実行中のコンテナIDまたはその名前を見つけます コマンド:

 $ podman ps 

出力例:

コンテナIDイメージコマンドが作成したステータスポート名607a288c810d docker.io/redhat/ubi8:latest / bin /bash2時間前アップ2時間前cool_cannon

ここでは、607a288c810d はコンテナIDです。

次に、podman attachと入力します。 コマンドの後に次のようなコンテナIDが続きます:

 $ podman attach 607a288c810d 

以下のようなコンテナ名を使用してアタッチすることもできます:

 $ podman attach cool_cannon 

コンテナからデタッチするには、CTRL+pを押すだけです。 およびCTRL+q

8。実行中のコンテナを表示する

実行中のコンテナを検索または一覧表示するには、次のように入力します。

 $ podman ps 

出力例:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe783c0202b7d docker.io/library/alpine:latest / bin /sh37秒前アップ38秒前optimistic_murdock

これにより、実行中のコンテナのみが一覧表示されます。実行中のコンテナと停止中のコンテナの両方を一覧表示する場合は、-aを使用します フラグ。

 $ podman ps -a 

出力例:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES56c20497cbcd docker.io/redhat/ubi8:latest / bin /bash3時間前終了 (0)3時間前wizardly_albattanid23672b15cff docker.io/redhat/ubi8:latest / bin /bash3時間前終了 (0)3時間前nifty_merkle89b2c038e1ba docker.io/redhat/ubi8:latest / bin /bash3時間前終了 (0)2時間前xenodochial_euler607a288c810d docker.io/redhat/ubi8:latest / bin /bash2時間前終了 (0)約1分前cool_cannone783c0202b7d docker.io/library/alpine:latest / bin /sh43秒前 43秒前optimistic_murdock

9。コンテナを閉じた後、自動的に削除します

コンテナをテストし、コンテナを使い終わったらすぐに削除することをお勧めします。その場合は、--rmを使用して、コンテナを閉じた後に自動的に削除できます。 フラグ:

 $ podman run -it --rm ubi8:latest 

コンテナを終了すると、自動的に削除されます。

10。コンテナの開始と停止

すでに述べたように、同じイメージを使用して複数のコンテナを作成できます。これは、物理マシンまたは仮想マシンと比較した場合のコンテナの最大の利点の1つです。

複数の新しいコンテナを作成するには、podman runを使用できます 「5。コンテナの実行」で説明されているコマンド セクション。

既存のコンテナを起動(電源オン)するには、次のようにします。

 $ podman start  

同様に、次のコマンドを使用して、実行中のコマンドを停止(電源オフ)できます。

 $ podman stop  

例を示しましょう。そうすれば、理解が深まります。

まず、すべてのコンテナのリストを見つけます:

  $ podman ps -a  コンテナIDイメージコマンドが作成したステータスポート名前 56c20497cbcd docker.io/redhat/ubi8:latest / bin / bash 2日前終了(0)2日前 wizardly_albattani  d23672b15cff docker.io/redhat/ubi8:latest / bin / bash 2日前終了(0)2日前 nifty_merkle  89b2c038e1ba docker.io/redhat/ubi8:latest / bin / bash 2日前終了(0)2日前 xenodochial_euler  607a288c810d docker.io/redhat/ubi8:latest / bin / bash 2日前終了(0)2日前 cool_cannon  e783c0202b7d docker.io/library/alpine:latest / bin / sh 2日前終了(0)2日前 optimistic_murdock  

コンテナの名前は名前に表示されます 上記の出力のセクション(最後の列)。

wizardly_albattaniという名前のコンテナを起動します コマンドの使用:

 $ podman start Wizardly_albattani 

開始されているかどうかを確認しましょう:

  $ podman ps  コンテナIDイメージコマンドが作成したステータスポート名56c20497cbcddocker.io/redhat/ubi8:latest/ bin /bash2日前アップ7秒前wizardly_albattani 

はい、7秒前にアップしました。

コンテナを停止するには、次の手順を実行します。

 $ podman stop Wizardly_albattani 

11。コンテナに名前を割り当てます

以前のコマンドの出力を詳しく調べると、Podmanは、コンテナーを起動するたびにランダムな名前を割り当てます。コンテナに名前を付けない場合、Podmanが自動的に名前を付けます。

次のスクリーンショットをご覧ください。同じコンテナを同じイメージで2回起動しました。コンテナを終了して2回目に再起動すると、同じイメージを使用した場合でも新しい名前が付けられます。

コンテナは、閉じるたびに起動するたびに新しい名前が付けられます。

ただし、--nameを使用してコンテナに静的な名前を割り当てることができます。 以下のようなフラグ:

 $ podman run -it -d --name ostechnix_redhat ubi8:latest 

上記のコマンドは、デタッチモードで新しいコンテナを作成し、ostechnix_redhatという名前を付けます。 。

実行中のコンテナのリストを表示するには、次のようにします。

$ podman ps

出力例:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6fa78116dcb7 docker.io/redhat/ubi8:latest / bin /bash4秒前アップ5秒前ostechnix_redhat 

コンテナの名前に気づきましたか?カスタム名を付けました(例:ostechnix_redhat )コンテナに。

12。カスタムイメージを作成する

Podmanは、事前設定されたイメージからコンテナをダウンロードして実行するためだけのものではありません。また、既存の画像からカスタム画像を作成することもできます。

まず、既存のコンテナを起動するか、新しいコンテナを実行します。

新しいUbuntuコンテナを作成します:

 $ podman run -it 1318b700e415 

これで、コンテナ内にいます。

 [メール保護]:/#

コンテナ内のアプリケーションをインストール、アップグレード、または削除するだけです。

このガイドの目的のために、ApacheWebサーバーをインストールします。

 [メール保護]:/#apt update 
 [メール保護]:/#apt install apache2 -y 
 [メール保護]:/#service apache2 start 

完了したら、コンテナからデタッチし、CTRL+pを押してホストのターミナルに戻ります。 およびCTRL+q

コンテナはまだバックグラウンドで実行されていることに注意してください!

次に、コマンドを使用して既存のコンテナからイメージをビルドします:

 $ podman commit b871b0fd5810 ostechnix / ubuntu_apache 

ここで

  • b871b0fd5810 -UbuntuコンテナID。
  • ostechnix –コンテナを作成したユーザーの名前。
  • ubuntu_apache –ユーザーostechnixによって作成されたイメージの名前。

次に、利用可能な画像を一覧表示して、新しい画像が作成されているかどうかを確認します。

$ポッドマン画像

出力例:

リポジトリタグの画像ID作成サイズlocalhost/ ostechnix/ubuntu_apache最新の6c9b2fb6640025秒前222MB docker.io/library/ubuntu 20.041318b700e41510日前75.2MBdocker.io/redhat/ubi8最新0ced1c7c9b232週間前234MBdocker.io/library/alpine最新d4ff818577bc7週間前5.87MB

上記の出力にあるように、 ubuntu_apacheという新しい画像が表示されます。 作成されます。

この画像で新しいコンテナを始めましょう:

 $ podman run -it --rm --name apache_webserver -p 8080:80 localhost / ostechnix / ubuntu_apache 

ここでは、前の手順で新しく作成されたイメージを使用してContainerを実行しています。ローカルポート8080もマッピングしています ローカルシステムで80をポートします コンテナの内側。

コンテナが起動したら、次のコマンドを使用してApacheWebサーバーが起動していることを確認します。

 [メール保護]:/#service apache2 start 

次に、ホストシステムでブラウザを開き、http://localhost:8080に移動します。 ApacheWebサーバーがコンテナで実行されているかどうかを確認します。

13。コンテナログを表示する

コンテナ内で行ったすべてのことを表示するには、次のコマンドを使用してコンテナのログを確認するだけです。

$podmanログapache_webserver

14。コンテナを削除する

コンテナが停止していることを確認してください:

 $ podman stop ostechnix_redhat 

コンテナを停止した後、次のコマンドを使用してコンテナを削除します:

 $ podman rm ostechnix_redhat 

同様に、上記のようにすべてのコンテナを1つずつ削除します。

コンテナの数が多い場合、複数のコンテナを1つずつ削除するのは面倒な作業になる可能性があります。次々に削除する代わりに、一度にすべて削除することができます。注意してください!削除されたコンテナを復元する方法はありません!

停止したすべてのコンテナを一度に削除するには、次のコマンドを実行するだけです:

$podmanコンテナプルーン

"Y"と入力します 確認してENTERを押します コンテナを削除するためのキー。

警告!これにより、実行されていないすべてのコンテナが削除されます。続行してもよろしいですか? [y / N]  y  2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e489b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7ed23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0 

15。画像を削除する

不要になった画像は削除できます!

次のコマンドを使用して、ダウンロードしたすべての画像を一覧表示します:

$ポッドマン画像

出力例:

リポジトリタグイメージID作成サイズlocalhost/ostechnix/ubuntu_apache最新6c9b2fb6640037分前222MBdocker.io/library/ubuntu20.041318b700e41510日前75.2MBdocker.io/redhat/ubi8最新0ced1c7c9b232週間前234MBdo /alpine最新のd4ff818577bc7週間前5.87MB

次に、以下のように、画像IDまたは名前を使用して画像を削除します。

 $ podman rmi 6c9b2fb66400 

出力例:

タグなし:localhost / ostechnix / ubuntu_apache:latestDeleted:6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d 

同様に、他のすべての未使用の画像を削除します。

ヘッズアップ: 実行中または停止中のコンテナによって現在使用されているイメージを削除することはできません。

結論

この包括的なPodmanチュートリアルでは、LinuxでPodmanを使い始める方法に関する15の実用的な例を提供しました。開発者の場合、Podmanを学ぶことはあなたのキャリアを前進させるために非常に重要です。 Podmanの使い方を徹底的に学びましょう。時間の価値があります!


Linux
  1. LinuxでNetworkManagerを使い始める

  2. FreeBSDクラウドサーバーを使い始める方法

  3. Linux で Latex を使い始める

  1. クラウドサーバーを使い始める

  2. Debian10でMagentoを使い始めましょう

  3. DebianでTaskselを使い始める

  1. Linuxを始める10の方法

  2. Istioチュートリアル:IstioBasics入門

  3. じゅじゅを始めるには?