marhkb / pods

Keep track of your podman containers
GNU General Public License v3.0
728 stars 12 forks source link

Pods on Fedora Silverblue? #732

Closed iamgitcat closed 10 months ago

iamgitcat commented 10 months ago

Pods (with local connection) work only if Podman Desktop is running. Maybe some solution is possible on immutable system, I could not manage to run local connection in Pods without Podman Desktop.

If I try to connect without Podman Desktop running: error trying to connect: No such file or directory (os error 2)

If I close Podman Desktop when Pods running: Connection lost: error reading a body from connection: unexpected EOF during chunk size line

The default unix:///run/user/1000/podman/podman.sock is no such file I found 2: /usr/lib/systemd/system/podman.socket /usr/lib/systemd/user/podman.socket

Environment

marhkb commented 10 months ago

Hi! I'm using Silverblue, too. Most likely not a bug in Pods.

This is most likely because Podman Desktop is doing something nasty to the socket that it shouldn't be doing. You should report this in their issue tracker.

See this video. The socket is dead after closing Podman Desktop. Pods and curl doesn't work any more.

Bildschirmaufzeichnung vom 2023-11-01, 17-06-55.webm

You can re-activate the socket by issuing:

systemctl --user restart podman.socket
frandavid100 commented 9 months ago

I'd like to ask @iamgitcat, did you end up opening that issue? Would you care to provide a link?

iamgitcat commented 9 months ago

I'd like to ask @iamgitcat, did you end up opening that issue? Would you care to provide a link?

This works systemctl --user restart podman.socket, but I ended with systemd services, so images auto-update now.

frandavid100 commented 9 months ago

This works systemctl --user restart podman.socket

Curiously, that seemed to work when I first tried it yesterday but not after a reboot. Then, Pods wasn't able to connect even after running the command repeatedly.

Is there any useful info I can give about that?

marhkb commented 9 months ago

@frandavid100 You could use a TCP socket if nothing else works (see https://gitlab.gnome.org/Teams/Circle/-/issues/150#note_1926675).

jkemp814 commented 9 months ago

I'm having problems also even though I have the socket running. When I enter my hostname (HP-Z840) I get that error message. I tried local, localhost, http://127.0.0.1. What I'm I suppose to enter the NAME field. I have seen another post asking if all this can be setup automatically, because some of us without docs, are unfamiliar with how to set this all up. I prefer to use this package due to you all trying to keep it consistent with GNOME.

I'm I supposed to have the system-wide podman.socket enabled also? Currently, it's disabled, only the --user socket is enabled and running.

iamgitcat commented 9 months ago

As the issue is closed, I will quickly explain why I decided not to use Pods.

That is an example to convert running container to systemd service:

cd ~/.config/systemd/user
podman generate systemd -f --new --name jellyfin
systemctl --user daemon-reload

That creates container-jellyfin.service file, it is easy to edit it. Service will manage creating/updating our container. Last command reloads it (if you edited something).

The service itself could be enabled/disabled (for autostart), or just start/stop (even with disabled) or is-active to check with systemctl --user enable container-jellyfin.service (replace enable to appropriate).

Also loginctl enable-linger should make services running even if you log out or change user.

Also this one should be probably enabled, so service could update image if new version: systemctl --user enable --now podman-auto-update.service

And the last. There are various ways to manage services easy GUI way. Check Guillotine GNOME extension, it is simple and powerful way to use scripts, quick launch things, etc, you may have tumblers to turn on/off services, the syntax of config is easy and it has default examples and more at theit github, for our example tumbler is made with this:

{
"type": "switch",
"title": "Jellyfin",
"start": "systemctl --user start container-jellyfin.service",
"stop": "systemctl --user stop container-jellyfin.service",
"check": "systemctl --user is-active container-jellyfin.service",
"icon": "emblem-videos-symbolic",
"interval_s": 30
}

So you have easy switch from a single tray icon, you even see if it is on or off, and without any other programs launching or running. I hope it helps.

jkemp814 commented 9 months ago

Thank you for the thorough response, although I'm still confused. I remember now trying to use this a while back and couldn't get it going. I dislike software where right from the start there is a problem. Maybe it's a Silverblue and Flatpak thing. I appreciate the leads. Will follow up and see where it goes.

iamgitcat commented 9 months ago

Try it. With Pods we use GUI to manage podman containers. With systemd we let system manage podman container, and that leads to more possibilities, as services are universal thing in Linux.

jkemp814 commented 9 months ago

I will. Thank you. Will this let me see all my Toolboxes? I have Three. fedora-toolbox-39, fedora-develop-39 and fedora-transcode-39?

iamgitcat commented 9 months ago

Um.. Toolbox rely on Podman, but you do not need podman/Pods for using Toolbox, which are basically a terminal of a distros?

jkemp814 commented 9 months ago

I was curious about the Toolboxes. I have actual containers, Tdarr, Plex, agentDVR. Toolboxes are an environment all to their own. Like having a mini Fedora inside of Fedora.

iamgitcat commented 9 months ago

All I could think off is launching it quick with Guillotine:

            {
                    "type": "command",
                    "title": "Toolbox",
                    "command": "gnome-terminal -- bash -c 'toolbox enter; exec bash'",
                    "icon": "org.gnome.Terminal-symbolic",
                    "killOnDisable": false
                }
marhkb commented 9 months ago

I'm having problems also even though I have the socket running. When I enter my hostname (HP-Z840) I get that error message. I tried local, localhost, http://127.0.0.1. What I'm I suppose to enter the NAME field. I have seen another post asking if all this can be setup automatically, because some of us without docs, are unfamiliar with how to set this all up. I prefer to use this package due to you all trying to keep it consistent with GNOME.

I'm I supposed to have the system-wide podman.socket enabled also? Currently, it's disabled, only the --user socket is enabled and running.

The name field is not relevant. You can enter anything there you want.

No idea, how you started the TCP socket. But if you used this command

podman system service --time=0 tcp://localhost:8888

then you shouldn't use the HTTP protocol. It should even work with HTTP, but I think you forgot to put the port 8888 at the end?

The correct URL would be:

tcp://localhost:8888

or

tcp://127.0.0.1:8888

grafik

amilganju commented 1 month ago

I was facing the same issue and I seem to have found the solution. So even though this issue is closed it might help some other users. The root cause is that the Flatpak needs to be given explicit read permissions to the directory containing the user socket i.e. /run/user/1000/podman