# トラブルシューティング _**最終更新日:2024/12/08**_ {{toc}} ## ビルドでエラー その1 ・詳細 rootユーザーで「podman build」すると、なんかエラーが出る。 ・エラー内容 ``` shell sd-bus call: Transport endpoint is not connected: Transport endpoint is not connected ``` ・原因 「DBUS_SESSION_BUS_ADDRESS」と「XDG_RUNTIME_DIR」が他のユーザーで使用されており、それが想定されてないため。 ~~らしい~~ ・解決方法 「DBUS_SESSION_BUS_ADDRESS」と「XDG_RUNTIME_DIR」を未設定状態にする。 ``` shell unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR ``` ・参考URL sd-bus call: Transport endpoint is not connected · Issue #3887 · containers/buildah https://github.com/containers/buildah/issues/3887 ## ビルドでエラー その2 ・詳細 rootユーザーで「podman build」すると、なんかエラーが出る。 ・エラー内容 ``` shell SHELL is not supported for OCI image format, [/bin/bash -o pipefail -c] will be ignored. Must use `docker` format ``` ・原因 Dockerfileが「OCI image format」(Podmanのコンテナイメージフォーマット)でサポートされてないフォーマットだった。 ・解決方法 「format」オプションで、Dockerのフォーマットを指定する。 ``` shell podman build ./ -t redmine_custom:1.0.0 --format docker ``` ・参考URL podman-build — Podman documentation https://docs.podman.io/en/latest/markdown/podman-build.1.html#format ## 外部ファイルにアクセスできない ・詳細 コンテナから外部ファイルにアクセスすると「Permission denied」とエラーが出る。 ・エラー内容 下記はPythonを動かそうとしたときのエラー。 外部ファイルの「main.py」がパーミッション許可されていない。 ``` python: can't open file '/app/main.py': [Errno 13] Permission denied ``` ・原因 対象のファイルのSELinux(またコイツか・・・)のコンテキストが、コンテナ用にラベルされていない。 ・解決方法 「chcon」コマンドでコンテナ用のラベル「container_file_t」を付与する。 ``` chcon -h -t container_file_t main.py ``` SELinuxのコンテキストは、下記のコマンドなどで確認できる。 ``` ls -lZ ``` ・参考URL https://ideal-reality.com/computer/server/podman-volume-selinux/ ## docker-composeが動かない ・詳細 「[[PodmanでDocker_Composeを使う]]」で導入した「docker-compose」が、OSのパッケージ更新したら動かなくなった(実話) ・エラー内容 ``` shell [root@localhost redmine]# docker-compose start Cannot connect to the Docker daemon at unix:///run/user/1000/podman/podman.sock. Is the docker daemon running? ``` ・原因 「podman-docker」などは「podman.socket」のソケットを使用してpodmanのコマンドを実行しているが、このソケットのパスが正しくないパスを指していた。 ・解決方法 「podman-docker」が使用している「podman.socket」のソケットのパスを、正しいパスに修正する。 まずは「podman.socket」のソケットのパスを確認する。 「Listen」がソケットのパスになる。 (下記の場合は「/run/podman/podman.sock」) ``` shell [root@localhost redmine]# systemctl status podman.socket ● podman.socket - Podman API Socket Loaded: loaded (/usr/lib/systemd/system/podman.socket; enabled; preset: disabled) Active: active (listening) since Sun 2024-12-08 13:51:48 JST; 3min 27s ago Until: Sun 2024-12-08 13:51:48 JST; 3min 27s ago Triggers: ● podman.service Docs: man:podman-system-service(1) Listen: /run/podman/podman.sock (Stream) CGroup: /system.slice/podman.socket ``` 次に環境変数「$DOCKER_HOST」の値を、「podman.socket」のソケットのパスに修正する。 「$DOCKER_HOST」は「podman-docker」が使用している「podman.socket」のソケットのパス。 スラッシュの数に注意。 (「unix://」「/run/podman/podman.sock」となる) ``` shell [root@localhost redmine]# export DOCKER_HOST=unix:///run/podman/podman.sock [root@localhost redmine]# echo $DOCKER_HOST unix:///run/podman/podman.sock ``` 最後に「docker-compose」が正常に動作することを確認する。 ``` shell [root@localhost redmine]# docker-compose start ``` ・参考URL https://github.com/containers/podman/discussions/16338 --- [[podman:wiki|メインページに戻る]]