このチュートリアルでは、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.04Podmanをroot以外のユーザーとして使用するため、すべてのコンテナーイメージはユーザーのホームディレクトリ、つまり
$HOME/.local/share/containers/storage
に保存されます。 、/var/lib/containers
の代わりに 。$ ls〜/ .local / share / containers / storage / キャッシュlibpodマウントオーバーレイオーバーレイ-コンテナオーバーレイ-画像オーバーレイ-レイヤーstorage.locktmpuserns.lock4。画像を表示
ローカルにダウンロードされた画像のリストを表示するには、次のコマンドを実行します:
$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の使い方を徹底的に学びましょう。時間の価値があります!