podman for windows
Section 2 podman コマンドラインからの初期化や使い方
概要
コンテナツールの podman (https://podman.io/) を Windows 環境にインストールしたので使ってみます。
ここで使用している環境は下記の通り。
- Windows 11 Pro (21H2)
- WSL 2 (Windows Subsystem for Linux)
- powershell 7
- podman v4.2.0
表記について
powershell を起動してコマンド入力して実行していきます。説明中の表記は下記のようになります。
PS C:\Users\(Windowsユーザ名)> コマンド
出力
PS C:\Users\(Windowsユーザ名)>
確認している環境では、Windows ユーザ名が Developer なので下記のように表現することになります。
PS C:\Users\Developer> コマンド
出力
PS C:\Users\Developer>
実際に入力するのはコマンド部分だけになるので全部コピーして貼り付けないようにしてください。
初期化
powershell を起動して初期化コマンドを入力します。
PS C:\Users\Developer> podman machine init
Extracting compressed file
Importing operating system into WSL (this may take a few minutes on a new WSL install)...
Configuring system...
Generating public/private ed25519 key pair.
Your identification has been saved in podman-machine-default
Your public key has been saved in podman-machine-default.pub
The key fingerprint is:
(中略)
The key's randomart image is:
+--[ED25519 256]--+
(中略)
+----[SHA256]-----+
Machine init complete
To start your machine run:
podman machine start
PS C:\Users\Developer>
これでコンテナが動作するベース部分が構築されました。
一度実行すれば、削除しない限りはこのままになります。
いろいろ消してもう一度という場合
いろいろ削除してもう一度 machine init する場合は、その前に podman machine rm
を実行する必要があります。
マシンの起動
podman はサービスで動作するものではないので、使うたびに起動させる必要があります。
とりあえず start させましょう。
PS C:\Users\Developer> podman machine start
Starting machine "podman-machine-default"
This machine is currently configured in rootless mode. If your containers
require root permissions (e.g. ports < 1024), or if you run into compatibility
issues with non-podman clients, you can switch using the following command:
podman machine set --rootful
API forwarding listening on: npipe:////./pipe/docker_engine
Docker API clients default to this address. You do not need to set DOCKER_HOST.
Machine "podman-machine-default" started successfully
PS C:\Users\Developer>
起動したところで何もないので次へ……
rootful って何ですか?
いろいろ削除してもう一度 machine init する場合は、その前に podman machine rm
を実行する必要があります。
サンプルのコンテナを使ってみる
docker を使ったことがあるなら、コンテナは run すると思うのですがコマンドが異なるだけで全く一緒です。
とりあえず、podman のマスコットを表示するだけのコンテナがあるのでそれを動かしてみましょう。
PS C:\Users\Developer> podman run quay.io/podman/hello
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob sha256:10bb09b205866b5d2a639f30bc69f21a147121f7e6fa46a7d4fe3ed0d4851cac
Copying config sha256:58f5021bd30ef3c587861869372a02c1f85ce8b83006ad7a993fb3e392778fb2
Writing manifest to image destination
Storing signatures
!... Hello Podman World ...!
.--"--.
/ - - \
/ (O) (O) \
~~~| -=(,Y,)=- |
.---. /` \ |~~
~/ o o \~~~~.----. ~~
| =(X)= |~ / (O (O) \
~~~~~~~ ~| =(Y_)=- |
~~~~ ~~~| U |~~
Project: https://github.com/containers/podman
Website: https://podman.io
Documents: https://docs.podman.io
Twitter: @Podman_io
PS C:\Users\Developer>
とりあえずコンテナが実行できることがわかりました。
コンテナの状態を確認しつつ、削除する
まずは、実行/停止中のコンテナリストを表示してみます。
PS C:\Users\Developer> podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b1990c57d12 quay.io/podman/hello:latest /usr/local/bin/po... 4 minutes ago Exited (0) 4 minutes ago gallant_mahavira
PS C:\Users\Developer>
hello は表示して止まってしまったので、これを削除します。
NAMES か CONATINER ID を使って消します。どちらも実行毎に変わるのでコマンドは自分で読み替えてください。
PS C:\Users\Developer> podman rm gallant_mahavira
8b1990c57d121fa9390f6c77956f59f7307bdc8a43fed96aabb0706a89331f32
PS C:\Users\Developer>
更に、image もダウンロードしているのでそれも削除します。これもIMAGE IDを使うのでリストで確認します。
PS C:\Users\Developer> podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/podman/hello latest 58f5021bd30e 13 hours ago 82.1 kB
PS C:\Users\Developer>
削除コマンドで消します。
PS C:\Users\Developer> podman rmi 58f5021bd30e
Untagged: quay.io/podman/hello:latest
Deleted: 58f5021bd30ef3c587861869372a02c1f85ce8b83006ad7a993fb3e392778fb2
PS C:\Users\Developer>
これで動作確認していたものを削除できました。
マシンを終了させる
コンテナを使わないのならコンテナを動作させるためのベースを動かしていてもしょうがないので止めます。
PS C:\Users\Developer> podman machine stop
Machine "podman-machine-default" stopped successfully
PS C:\Users\Developer>
止めてしまうと、コンテナ関係のコマンドは通らなくなるので、動かす場合は、またmachine start
から始めてください。
ここまでのまとめ
とりあえず動くねーってことまでの確認なので、次は Web サーバーを立ててみたりそういうのをやってみます。