プロジェクト

全般

プロフィール

トラブルシューティング

最終更新日:2024/12/08

ビルドでエラー その1

・詳細
rootユーザーで「podman build」すると、なんかエラーが出る。

・エラー内容

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」を未設定状態にする。

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 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のフォーマットを指定する。

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のパッケージ更新したら動かなくなった(実話)

・エラー内容

[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」)

[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」となる)

[root@localhost redmine]# export DOCKER_HOST=unix:///run/podman/podman.sock
[root@localhost redmine]# echo $DOCKER_HOST
unix:///run/podman/podman.sock

最後に「docker-compose」が正常に動作することを確認する。

[root@localhost redmine]# docker-compose start

・参考URL
https://github.com/containers/podman/discussions/16338


メインページに戻る

他の形式にエクスポート: PDF HTML TXT