ページの作成:「== 概要 == <br><br> == Podmanコマンド == ==== ログイン ==== podman loguin -u <ユーザ名> -v <登録するURL> # 例: Docker Hubにログインする場合 podman login -u <Docker Hubのユーザ名> -v https://docker.io podman login -u <Docker Hubのユーザ名> -v https://index.docker.io/v2/ <br> 認証情報は、/run/user/$UID/containers/auth.jsonファイルに保存される。<br> <br> Docker Hubにログインすることにより、Podma…」 |
|||
| (同じ利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Podmanコマンドは、Linuxコンテナを管理するためのコマンドラインツールである。<br> | |||
Podmanコマンドを駆使することにより、コンテナの作成、管理、操作等が可能となる。<br> | |||
<br> | |||
また、Podmanはルートレスでも動作するため、セキュリティ面でも優れたオプションである。<br> | |||
<br> | |||
BuildahやSkopeo等などのOSSツールを使用して、Podmanコンテナを検索、実行、ビルドすることもできる。<br> | |||
<br><br> | |||
== PodmanコマンドとDockerコマンドの違い == | |||
Podmanは、Dockerのコマンドラインインターフェース (CLI) と高い互換性がある。<br> | |||
多くの場合、dockerをpodmanに置き換えるだけで同じコマンドが機能する。<br> | |||
<br> | |||
しかし、いくつかのコマンドやオプションは存在しない、または、動作が異なる場合がある。<br> | |||
<br> | |||
これらの違いを除けば、基本的にはDockerとPodmanのコマンドは非常に類似しており、PodmanはDockerのCLIと高い互換性を持つように設計されている。<br> | |||
そのため、DockerからPodmanに移行する時にコマンドの使用方法を大きく変更する必要はほとんどない。<br> | |||
<br> | |||
* コンテナとイメージの一覧表示 | |||
*: Dockerではdocker psとdocker imagesで、それぞれ実行中のコンテナとイメージの一覧を表示する。 | |||
*: Podmanにおいても、podman psとpodman imagesで同様のことができるが、podman container listやpodman image listもサポートされている。 | |||
*: <br> | |||
* ログの取得 | |||
*: Dockerでコンテナのログを取得する場合、docker logsを使用する。 | |||
*: Podmanにおいても、podman logsを使用するが、ログの形式や一部のオプションが異なる場合がある。 | |||
*: <br> | |||
* ネットワーク関連 | |||
*: Dockerにはdocker networkコマンドがあり、カスタムネットワークの作成や管理が可能である。 | |||
*: Podmanではpodman networkコマンドがこれに対応するが、ネットワークの管理方法や利用可能な機能が異なる場合がある。 | |||
*: <br> | |||
* デーモン関連 | |||
*: Dockerはデーモン (dockerd) を使用しているため、docker systemコマンドでデーモンの状態を管理する。 | |||
*: Podmanはデーモンレスであるため、podman systemコマンドは、主にシステム全体の情報を提供する。 | |||
*: <br> | |||
* Docker Compose | |||
*: Docker Composeはdocker-composeコマンドを使用してマルチコンテナのアプリケーションを管理する。 | |||
*: Podmanでは、同様の機能を提供するためにpodman-composeが使用されるが、これも独自のツールであり、完全に同一の機能をサポートしているわけではない。 | |||
<br><br> | <br><br> | ||
| 184行目: | 220行目: | ||
</center> | </center> | ||
<br> | <br> | ||
<code>source</code> または <code>src</code>は両方とも使用できる。<br> | |||
また、<code>target</code>、または、<code>dst</code>は両方とも使用できる。<br> | |||
<br> | |||
===== 匿名ボリューム ===== | |||
ホスト側に/var/lib/podman/volumesディレクトリ内 (Podmanが管理する領域) に自動的にボリュームが確保されて、指定したコンテナ内のディレクトリと共有される。<br> | |||
識別のためにハッシュ値 (ランダムなID) が自動的に振られており、同一のネットワークからそのハッシュ値でアクセスすることができる。<br> | |||
<br> | |||
ただし、コンテナ削除後もデータは保持されるが、特定が難しい。<br> | |||
<br> | |||
podman container run --mount type=volume,dst=<コンテナ側のディレクトリパス 例: /tmp/sample> <コンテナ名/イメージ名:タグ名> | |||
<br> | |||
===== 名前付きボリューム ===== | |||
名前付きボリュームは、明示的に名前を付けて管理できる。<br> | |||
これは、複数のコンテナ間でデータ共有が容易であり、コンテナ削除後もデータを容易に特定・再利用可能である。<br> | |||
<br> | |||
匿名ボリュームと同様、ホスト側には/var/lib/podman/volumesディレクトリ内に領域が確保されて、指定したコンテナ内のディレクトリと共有される。<br> | |||
ホスト名を指定するため、同一のネットワークからそのホスト名でアクセスすることができる。<br> | |||
<br> | |||
podman container run --mount type=volume,src=<ボリューム名>,dst=<ホスト名>:<コンテナ側のディレクトリパス 例: /tmp/sample> <コンテナ名/イメージ名:タグ名> | |||
<br> | |||
また、名前付きボリュームは、事前作成することも可能である。<br> | |||
podman volume create <ボリューム名> | |||
<br> | |||
===== バインドマウント ===== | |||
バインドマウントは、ホストの特定のディレクトリやファイルを直接コンテナにマウントする。<br> | |||
バインドマウントを行う場合、ホスト側のパスは絶対パスである必要がある。<br> | |||
また、ホスト側のファイルシステムに直接依存する。<br> | |||
<br> | |||
<u>ホスト側のカレントディレクトリ内</u>にある指定したディレクトリとコンテナ側の指定したディレクトリが共有される。<br> | |||
podman container run --mount \ | |||
type=bind,src=<ホスト側のディレクトリパス 例: $PWD/host-sample>,dst=<コンテナ側のディレクトリパス 例: /tmp/container-sample> <コンテナ名/イメージ名:タグ名> | |||
<br> | |||
ホスト側がSELinuxを使用している場合は、ボリュームのマウントに<code>:Z</code>オプションを付加する必要がある。<br> | |||
これは、Podmanにボリュームのコンテンツをコンテナ内のラベルと一致するようにラベルを変更するよう指示するものである。<br> | |||
podman run -d --rm -v /<ホスト側のディレクトリのパス 1>/:/<コンテナ側のディレクトリのパス 1>:Z -v /<ホスト側のディレクトリのパス 2>/:/<コンテナ側のディレクトリのパス 2>:Z | |||
<br> | |||
また、読み取り専用にすることもできる。<br> | |||
podman container run --mount \ | |||
type=bind,src=<ホスト側のディレクトリパス 例: $PWD/hoge>,dst=<コンテナ側のディレクトリパス 例: /tmp/piyo>,readonly <コンテナ名/イメージ名:タグ名> | |||
<br> | |||
===== ボリュームの確認 ===== | |||
ボリュームの一覧表示を行う。<br> | |||
podman volume ls | |||
<br> | |||
ボリュームの詳細を確認する。<br> | |||
podman volume inspect <ボリューム名> | |||
<br> | |||
ボリュームを作成する。<br> | |||
podman volume create <ボリューム名> | |||
<br> | |||
ボリュームを削除する。 | |||
podman volume rm <ボリューム名> | |||
<br> | |||
===== マウントの使い分け ===== | |||
* 匿名ボリューム | * 匿名ボリューム | ||
*: | *: 一時的なデータ保存 | ||
*: | *: コンテナ個別のデータ管理 | ||
*: <br> | *: <br> | ||
* 名前付きボリューム | * 名前付きボリューム | ||
*: | *: データベース等の永続化が必要なデータ | ||
*: | *: 複数コンテナ間でのデータを共有する場合 | ||
*: | *: バックアップが必要なデータ | ||
*: <br> | *: <br> | ||
* バインドマウント | * バインドマウント | ||
*: | *: 開発環境でのソースコードの共有 | ||
*: | *: ホスト側の特定ファイルへのアクセスが必要な場合 | ||
<br> | <br> | ||
| 259行目: | 344行目: | ||
<br><br> | <br><br> | ||
== Podmanのストレージ == | |||
コンテナ内で発生したデータは同じコンテナ内のどこかに書き込まれるが、コンテナを破棄すると同時に削除される。<br> | |||
コンテナを破棄してもデータは保存する場合、または、他のコンテナで再利用する場合は、コンテナ外にデータ保存領域を作成する機能を提供している。<br> | |||
<br> | |||
* ボリューム | |||
*: Podmanの管理下でストレージ領域を確保する。 | |||
*: ルートレスモードのデフォルトでは、~/.local/share/containersディレクトリである。 | |||
*: <br> | |||
*: 名前付きボリュームと匿名ボリュームがあり、名前付きの場合はホスト内で名前解決できるため簡単にアクセスすることができる。 | |||
*: 匿名ボリュームは任意のハッシュ値が振られる。 | |||
*: <br> | |||
*: 他のプロセスからはアクセスできないため安全に使用できる。 | |||
*: <br> | |||
* バインドマウント | |||
*: ホスト側のディレクトリをコンテナ内のディレクトリと共有する。 | |||
*: <br> | |||
* tmpfs | |||
*: メモリ上に一時的なストレージ領域を確保する。 | |||
*: 使用用途としては、機密性の高い情報を一時的にマウントする場合等がある。 | |||
<br> | |||
<code>-v</code>オプション、<code>VOLUME</code>、<code>volumes</code>で指定する場合に関しても、基本的には上記のいずれかを扱っている。<br> | |||
<br><br> | |||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:コンテナ]] | [[カテゴリ:コンテナ]] | ||