- インストール
- Podman machine
- イメージ
- コンテナ
- Volume
- Pod
- 確認
- No connection could be made because the target machine actively refused it エラー
- Example
インストール
macOS
$ brew install podman
- Windows
> winget add RedHat.Podman
確認
$ podman --version
$ podman info
ヘルプ
$ podman --help $ podman <subcommand> --help
Podman machine
macOS の場合はQEMU上、Windows の場合は WSL 上に仮想(Linux)マシンを起動
$ podman machine init // 作成(初回のみ) $ podman machine start // 起動 $ podman machine list // 一覧 $ podman machine stop // 停止
イメージ
$ podman pull <image_name> // 取得 $ podman images // 一覧 $ podman image inspect <image_id> // 詳細 $ podman rmi <image_id> // 削除
コンテナ
docker と同じ
$ podman run -d -p 8000:80 --name nginx nginx $ podman ps $ podman ps -a $ podman stop <container_id> $ podman rm <container_id>
Volume
$ podman volume create <volume_name> $ podman volume ls $ podman volume inspect <volume_name> $ podman volume rm <volume_name>
Pod
Pod 作成(nginxを例)
$ podman pod create -p 8080:80 --name nginx-pod $ podman pod ps
Pod へコンテナ追加
$ podman run -dt --pod nginx-pod --name nginx nginx $ podman ps -a --pod $ podman pod logs -c nginx nginx-pod // ログ確認
Kubernetes YAMLファイル生成
$ podman generate kube nginx-pod >> nginx-pod.yaml
YAMLファイルからPod起動
$ podman play kube nginx-pod.yaml
$ podman play kube --down nginx-pod.yaml // 停止 & 削除
確認
ログ
$ podman logs <container_name> $ podman pod logs -c <container_name> <pod_name>
コンテナ接続
$ podman exec -it <container_name> bash
Podman のディスク使用量
$ podman system df
No connection could be made because the target machine actively refused it エラー
以下のようなエラーでコンテナにアクセスできなくなる場合がある。
Error: failed to connect: dial tcp 127.0.0.1:52066: connectex: No connection could be made because the target machine actively refused it.
Windows の場合は、一旦 podman machine stop
でストップし、管理者権限で Powershell から以下のコマンドを実行する。
> net stop winnat > net start winnat
これでたいてい解決する。
改善しない場合は 以下で Podman machine を再作成する。
$ podman machine stop $ podman machine rm $ podman machine init
Example
postgresql
$ podman machine start $ podman pod create -p 5432:5432 --name postgres-pod $ podman volume create pgdata_volume $ podman run -d --name postgres --pod postgres-pod -e POSTGRES_PASSWORD=mysecretpassword -v pgdata_volume:/var/lib/postgresql/data postgres $ podman generate kube postgres-pod >> postgres-pod.yaml $ podman pod stop postgres-pod $ podman pod rm postgres-pod $ podman play kube postgres-pod.yaml $ podman exec -it postgres-pod-postgres bash # psql -U postgres postgres=# \dt ... $ podman play kube --down postgres-pod.yaml
Oracle Database 23c free
イメージは10G程あります・
$ podman pull container-registry.oracle.com/database/free:latest $ podman pod create -p 1521:1521 --name oracle-pod $ podman volume create oradata_volume $ podman run -d --name oracle23c --pod oracle-pod -e ORACLE_PWD=mysecretpassw0rd -v oradata_volume:/opt/oracle/oradata container-registry.oracle.com/database/free $ podman generate kube oracle-pod >> oracle-pod.yaml $ podman pod stop oracle-pod $ podman pod rm oracle-pod $ podman play kube oracle-pod.yaml $ podman exec -it oracle-pod-oracle23c bash $ sqlplus sys/mysecretpassw0rd@//localhost:1521/FREE as sysdba SQL> show pdbs ... $ podman play kube --down oracle-pod.yaml