Open florentulve opened 11 months ago
Is it possible to review/merge this PR ? I'd love to use Exegol with podman instead of docker.
All the best, Nariod
Have you been able to test it? Didn't have the bandwidth just yet
Thank you for the PR, I will check this as soon as possible.
Sorry for the delay, back from engagement (using Exegol <3). I tried the branch feat/podman from the repo https://github.com/florentulve/Exegol.git. On a fresh Fedora VM with podman installed, I get the following result: I guess podman is only supported once the container is created @florentulve ?
Hi, sorry for the delay.
I think the trick here is to have the docker/podman compatibility layer installed. (Set up this for year now and forgot to mention that, sorry).
sudo dnf install podman-docker
systemctl --user enable --now podman.socket
set -gx DOCKER_HOST "unix:///$XDG_RUNTIME_DIR/podman/podman.sock"
It's not a first class support though but as a podman user I think it's ok.
I just tried your branch feat/podman
but encountered an error :
user@localhost-live:~$ exegol start test-podman light
[*] Exegol is currently in version v4.3.0b1 [9f371802]
[*] Exegol Discord serv.: https://discord.gg/cXThyp7D6P
[*] Exegol documentation: https://exegol.rtfd.io/
[+] We thank Capgemini for supporting the project (helping with dev) 🙏
[+] We thank HackTheBox for sponsoring the multi-arch support 💚
[!] You are currently using a Beta version of Exegol, which may be unstable.
[*] Starting exegol
[*] Arguments supplied with the command, skipping interactive mode
⭐ Container summary
┌──────────────────┬────────────────────────────────────────────────────────┐
│ Name │ test-podman │
│ Image │ light - v.3.1.1 (Update available (v.3.1.1 ➡ v.3.1.1)) │
├──────────────────┼────────────────────────────────────────────────────────┤
│ Credentials │ root : CRWRydP90ooi92xuAMttCsj081SzEQ │
│ Desktop │ Off 🪓 │
│ X11 │ On ✔ │
│ Network │ host │
│ Timezone │ On ✔ │
│ Exegol resources │ On ✔ (/opt/resources) │
│ My resources │ On ✔ (/opt/my-resources) │
│ Shell logging │ Off 🪓 │
│ Privileged │ Off ✔ │
│ Workspace │ Dedicated (/workspace) │
└──────────────────┴────────────────────────────────────────────────────────┘
[*] Creating new exegol container
[+] Exegol container successfully created !
[-] It seems that something unexpected happened ...
[-] To draw our attention to the problem and allow us to fix it, you can share your error with us (by copying and pasting it with this
syntax: ``` <error> ```) by creating a GitHub issue at this address: https://github.com/ThePorgs/Exegol/issues
[+] Thank you for your collaboration!
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/user/Exegol/exegol/manager/ExegolManager.py:396 in __loadOrCreateContainer │
│ │
│ 393 │ │ │ │ │ │ │ │ raise NotImplemented │
│ 394 │ │ │ │ else: │
│ 395 │ │ │ │ │ assert container_tag is not None │
│ ❱ 396 │ │ │ │ │ cls.__container = DockerUtils.getContainer(container_tag) │
│ 397 │ │ except (ObjectNotFound, IndexError): │
│ 398 │ │ │ # ObjectNotFound is raised when the container_tag provided by the user does │
│ 399 │ │ │ # IndexError is raise when no container exist (raised from TUI interactive s │
│ │
│ ╭───────────────────────────────── locals ──────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ │ container_tag = 'test-podman' │ │
│ │ container_tags = None │ │
│ │ multiple = False │ │
│ │ must_exist = False │ │
│ │ override_container = None │ │
│ ╰───────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/utils/DockerUtils.py:183 in getContainer │
│ │
│ 180 │ │ │ │ lowered_tag = tag.lower() │
│ 181 │ │ │ │ if lowered_tag != tag: │
│ 182 │ │ │ │ │ return cls.getContainer(lowered_tag) │
│ ❱ 183 │ │ │ raise ObjectNotFound │
│ 184 │ │ # Filter results with exact name matching │
│ 185 │ │ for c in container: │
│ 186 │ │ │ if c.name == f"exegol-{tag}": │
│ │
│ ╭────────────────────────── locals ──────────────────────────╮ │
│ │ cls = <class 'exegol.utils.DockerUtils.DockerUtils'> │ │
│ │ container = [] │ │
│ │ tag = 'test-podman' │ │
│ ╰────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ObjectNotFound
During handling of the above exception, another exception occurred:
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/user/Exegol/exegol/manager/ExegolController.py:61 in main │
│ │
│ 58 │ │ # Set logger verbosity depending on user input │
│ 59 │ │ ExeLog.setVerbosity(ParametersManager().verbosity, ParametersManager().quiet) │
│ 60 │ │ # Start Main controller & Executing action selected by user CLI │
│ ❱ 61 │ │ ExegolController.call_action() │
│ 62 │ except KeyboardInterrupt: │
│ 63 │ │ logger.empty_line() │
│ 64 │ │ logger.info("Exiting") │
│ │
│ /home/user/Exegol/exegol/manager/ExegolController.py:41 in call_action │
│ │
│ 38 │ │ │ # Fetch main operation function │
│ 39 │ │ │ main_action = cls.__action() │
│ 40 │ │ │ # Execute main function │
│ ❱ 41 │ │ │ main_action() │
│ 42 │ │ else: │
│ 43 │ │ │ # TODO review required parameters │
│ 44 │ │ │ logger.error(f"These parameters are mandatory but missing: {','.join(missing │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolController.ExegolController'> │ │
│ │ main_action = <bound method ExegolManager.start of <class │ │
│ │ 'exegol.manager.ExegolManager.ExegolManager'>> │ │
│ │ missing_params = [] │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/manager/ExegolManager.py:77 in start │
│ │
│ 74 │ │ cls.__interactive_mode = not bool(ParametersManager().containertag) │
│ 75 │ │ if not cls.__interactive_mode: │
│ 76 │ │ │ logger.info("Arguments supplied with the command, skipping interactive mode" │
│ ❱ 77 │ │ container = cls.__loadOrCreateContainer() │
│ 78 │ │ assert container is not None and type(container) is ExegolContainer │
│ 79 │ │ if not container.isNew(): │
│ 80 │ │ │ # Check and warn user if some parameters don't apply to the current session │
│ │
│ ╭────────────────────────── locals ──────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ ╰────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/manager/ExegolManager.py:404 in __loadOrCreateContainer │
│ │
│ 401 │ │ │ if must_exist: │
│ 402 │ │ │ │ logger.warning(f"The container named '{container_tag}' has not been foun │
│ 403 │ │ │ │ return [] if multiple else None │
│ ❱ 404 │ │ │ return cls.__createContainer(container_tag) │
│ 405 │ │ assert cls.__container is not None │
│ 406 │ │ return cast(Union[Optional[ExegolContainer], List[ExegolContainer]], cls.__conta │
│ 407 │
│ │
│ ╭───────────────────────────────── locals ──────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ │ container_tag = 'test-podman' │ │
│ │ container_tags = None │ │
│ │ multiple = False │ │
│ │ must_exist = False │ │
│ │ override_container = None │ │
│ ╰───────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/manager/ExegolManager.py:521 in __createContainer │
│ │
│ 518 │ │ │ │ │ │ "read CLI options with [green]exegol start -h[/green]") │
│ 519 │ │ │
│ 520 │ │ container = DockerUtils.createContainer(model) │
│ ❱ 521 │ │ container.postCreateSetup() │
│ 522 │ │ return container │
│ 523 │ │
│ 524 │ @classmethod │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ │ config = <exegol.model.ContainerConfig.ContainerConfig object at 0x7fed873e6ff0> │ │
│ │ container = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │
│ │ image = light (3.1.1/3.1.1 amd64) - 11.6GB - ([orange3]Update available (v.3.1.1 │ │
│ │ :arrow_right: v.3.1.1)[/orange3], [bright_black]N/A[/bright_black]) │ │
│ │ model = <exegol.model.ExegolContainerTemplate.ExegolContainerTemplate object at │ │
│ │ 0x7fed86442120> │ │
│ │ name = 'test-podman' │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/model/ExegolContainer.py:310 in postCreateSetup │
│ │
│ 307 │ │ │ # Update entrypoint script in the container │
│ 308 │ │ │ self.__container.put_archive("/", ImageScriptSync.getImageSyncTarData(includ │
│ 309 │ │ │ if self.__container.status.lower() == "created": │
│ ❱ 310 │ │ │ │ self.__start_container() │
│ 311 │ │ │ try: │
│ 312 │ │ │ │ self.__updatePasswd() │
│ 313 │ │ │ except APIError as e: │
│ │
│ ╭──────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ is_temporary = False │ │
│ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/model/ExegolContainer.py:123 in __start_container │
│ │
│ 120 │ │ │ if not self.config.legacy_entrypoint: # TODO improve startup compatibility │
│ 121 │ │ │ │ try: │
│ 122 │ │ │ │ │ # Try to find log / startup messages. Will time out after 2 seconds │
│ ❱ 123 │ │ │ │ │ for line in ContainerLogStream(self.__container, start_date=start_da │
│ 124 │ │ │ │ │ │ # Once the last log "READY" is received, the startup sequence is │
│ 125 │ │ │ │ │ │ if line == "READY": │
│ 126 │ │ │ │ │ │ │ break │
│ │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮ │
│ │ progress = <rich.status.Status object at 0x7fed8645b350> │ │
│ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │
│ │ start_date = datetime.datetime(2023, 12, 13, 21, 19, 39, 408110) │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/user/Exegol/exegol/utils/ContainerLogStream.py:57 in __next__ │
│ │
│ 54 │ │ │ │ │ return line │
│ 55 │ │ │ │ else: │
│ 56 │ │ │ │ │ self.__enable_timeout = False # disable timeout if the container is │
│ ❱ 57 │ │ │ │ │ self.__line_buffer += streamed_char # add characters to the line bu │
│ 58 │ │ │ # When the data stream is empty, check if a timeout condition apply │
│ 59 │ │ │ if self.__enable_timeout and self.__until_date >= self.__timeout_date: │
│ 60 │ │ │ │ logger.debug("Container log stream timed-out") │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ self = <exegol.utils.ContainerLogStream.ContainerLogStream object at │ │
│ │ 0x7fed86483920> │ │
│ │ streamed_char = 'S' │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: can't concat str to bytes
My setup is a brand new Fedora 39 VM with podman-docker installed. Nothing too fancy IMHO.
I just tried your branch
feat/podman
but encountered an error :user@localhost-live:~$ exegol start test-podman light [*] Exegol is currently in version v4.3.0b1 [9f371802] [*] Exegol Discord serv.: https://discord.gg/cXThyp7D6P [*] Exegol documentation: https://exegol.rtfd.io/ [+] We thank Capgemini for supporting the project (helping with dev) 🙏 [+] We thank HackTheBox for sponsoring the multi-arch support 💚 [!] You are currently using a Beta version of Exegol, which may be unstable. [*] Starting exegol [*] Arguments supplied with the command, skipping interactive mode ⭐ Container summary ┌──────────────────┬────────────────────────────────────────────────────────┐ │ Name │ test-podman │ │ Image │ light - v.3.1.1 (Update available (v.3.1.1 ➡ v.3.1.1)) │ ├──────────────────┼────────────────────────────────────────────────────────┤ │ Credentials │ root : CRWRydP90ooi92xuAMttCsj081SzEQ │ │ Desktop │ Off 🪓 │ │ X11 │ On ✔ │ │ Network │ host │ │ Timezone │ On ✔ │ │ Exegol resources │ On ✔ (/opt/resources) │ │ My resources │ On ✔ (/opt/my-resources) │ │ Shell logging │ Off 🪓 │ │ Privileged │ Off ✔ │ │ Workspace │ Dedicated (/workspace) │ └──────────────────┴────────────────────────────────────────────────────────┘ [*] Creating new exegol container [+] Exegol container successfully created ! [-] It seems that something unexpected happened ... [-] To draw our attention to the problem and allow us to fix it, you can share your error with us (by copying and pasting it with this syntax: ``` <error> ```) by creating a GitHub issue at this address: https://github.com/ThePorgs/Exegol/issues [+] Thank you for your collaboration! ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮ │ /home/user/Exegol/exegol/manager/ExegolManager.py:396 in __loadOrCreateContainer │ │ │ │ 393 │ │ │ │ │ │ │ │ raise NotImplemented │ │ 394 │ │ │ │ else: │ │ 395 │ │ │ │ │ assert container_tag is not None │ │ ❱ 396 │ │ │ │ │ cls.__container = DockerUtils.getContainer(container_tag) │ │ 397 │ │ except (ObjectNotFound, IndexError): │ │ 398 │ │ │ # ObjectNotFound is raised when the container_tag provided by the user does │ │ 399 │ │ │ # IndexError is raise when no container exist (raised from TUI interactive s │ │ │ │ ╭───────────────────────────────── locals ──────────────────────────────────╮ │ │ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │ │ │ container_tag = 'test-podman' │ │ │ │ container_tags = None │ │ │ │ multiple = False │ │ │ │ must_exist = False │ │ │ │ override_container = None │ │ │ ╰───────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/utils/DockerUtils.py:183 in getContainer │ │ │ │ 180 │ │ │ │ lowered_tag = tag.lower() │ │ 181 │ │ │ │ if lowered_tag != tag: │ │ 182 │ │ │ │ │ return cls.getContainer(lowered_tag) │ │ ❱ 183 │ │ │ raise ObjectNotFound │ │ 184 │ │ # Filter results with exact name matching │ │ 185 │ │ for c in container: │ │ 186 │ │ │ if c.name == f"exegol-{tag}": │ │ │ │ ╭────────────────────────── locals ──────────────────────────╮ │ │ │ cls = <class 'exegol.utils.DockerUtils.DockerUtils'> │ │ │ │ container = [] │ │ │ │ tag = 'test-podman' │ │ │ ╰────────────────────────────────────────────────────────────╯ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ObjectNotFound During handling of the above exception, another exception occurred: ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮ │ /home/user/Exegol/exegol/manager/ExegolController.py:61 in main │ │ │ │ 58 │ │ # Set logger verbosity depending on user input │ │ 59 │ │ ExeLog.setVerbosity(ParametersManager().verbosity, ParametersManager().quiet) │ │ 60 │ │ # Start Main controller & Executing action selected by user CLI │ │ ❱ 61 │ │ ExegolController.call_action() │ │ 62 │ except KeyboardInterrupt: │ │ 63 │ │ logger.empty_line() │ │ 64 │ │ logger.info("Exiting") │ │ │ │ /home/user/Exegol/exegol/manager/ExegolController.py:41 in call_action │ │ │ │ 38 │ │ │ # Fetch main operation function │ │ 39 │ │ │ main_action = cls.__action() │ │ 40 │ │ │ # Execute main function │ │ ❱ 41 │ │ │ main_action() │ │ 42 │ │ else: │ │ 43 │ │ │ # TODO review required parameters │ │ 44 │ │ │ logger.error(f"These parameters are mandatory but missing: {','.join(missing │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ cls = <class 'exegol.manager.ExegolController.ExegolController'> │ │ │ │ main_action = <bound method ExegolManager.start of <class │ │ │ │ 'exegol.manager.ExegolManager.ExegolManager'>> │ │ │ │ missing_params = [] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/manager/ExegolManager.py:77 in start │ │ │ │ 74 │ │ cls.__interactive_mode = not bool(ParametersManager().containertag) │ │ 75 │ │ if not cls.__interactive_mode: │ │ 76 │ │ │ logger.info("Arguments supplied with the command, skipping interactive mode" │ │ ❱ 77 │ │ container = cls.__loadOrCreateContainer() │ │ 78 │ │ assert container is not None and type(container) is ExegolContainer │ │ 79 │ │ if not container.isNew(): │ │ 80 │ │ │ # Check and warn user if some parameters don't apply to the current session │ │ │ │ ╭────────────────────────── locals ──────────────────────────╮ │ │ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │ │ ╰────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/manager/ExegolManager.py:404 in __loadOrCreateContainer │ │ │ │ 401 │ │ │ if must_exist: │ │ 402 │ │ │ │ logger.warning(f"The container named '{container_tag}' has not been foun │ │ 403 │ │ │ │ return [] if multiple else None │ │ ❱ 404 │ │ │ return cls.__createContainer(container_tag) │ │ 405 │ │ assert cls.__container is not None │ │ 406 │ │ return cast(Union[Optional[ExegolContainer], List[ExegolContainer]], cls.__conta │ │ 407 │ │ │ │ ╭───────────────────────────────── locals ──────────────────────────────────╮ │ │ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │ │ │ container_tag = 'test-podman' │ │ │ │ container_tags = None │ │ │ │ multiple = False │ │ │ │ must_exist = False │ │ │ │ override_container = None │ │ │ ╰───────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/manager/ExegolManager.py:521 in __createContainer │ │ │ │ 518 │ │ │ │ │ │ "read CLI options with [green]exegol start -h[/green]") │ │ 519 │ │ │ │ 520 │ │ container = DockerUtils.createContainer(model) │ │ ❱ 521 │ │ container.postCreateSetup() │ │ 522 │ │ return container │ │ 523 │ │ │ 524 │ @classmethod │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │ │ │ config = <exegol.model.ContainerConfig.ContainerConfig object at 0x7fed873e6ff0> │ │ │ │ container = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │ │ │ image = light (3.1.1/3.1.1 amd64) - 11.6GB - ([orange3]Update available (v.3.1.1 │ │ │ │ :arrow_right: v.3.1.1)[/orange3], [bright_black]N/A[/bright_black]) │ │ │ │ model = <exegol.model.ExegolContainerTemplate.ExegolContainerTemplate object at │ │ │ │ 0x7fed86442120> │ │ │ │ name = 'test-podman' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/model/ExegolContainer.py:310 in postCreateSetup │ │ │ │ 307 │ │ │ # Update entrypoint script in the container │ │ 308 │ │ │ self.__container.put_archive("/", ImageScriptSync.getImageSyncTarData(includ │ │ 309 │ │ │ if self.__container.status.lower() == "created": │ │ ❱ 310 │ │ │ │ self.__start_container() │ │ 311 │ │ │ try: │ │ 312 │ │ │ │ self.__updatePasswd() │ │ 313 │ │ │ except APIError as e: │ │ │ │ ╭──────────────────────────────────────── locals ────────────────────────────────────────╮ │ │ │ is_temporary = False │ │ │ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/model/ExegolContainer.py:123 in __start_container │ │ │ │ 120 │ │ │ if not self.config.legacy_entrypoint: # TODO improve startup compatibility │ │ 121 │ │ │ │ try: │ │ 122 │ │ │ │ │ # Try to find log / startup messages. Will time out after 2 seconds │ │ ❱ 123 │ │ │ │ │ for line in ContainerLogStream(self.__container, start_date=start_da │ │ 124 │ │ │ │ │ │ # Once the last log "READY" is received, the startup sequence is │ │ 125 │ │ │ │ │ │ if line == "READY": │ │ 126 │ │ │ │ │ │ │ break │ │ │ │ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮ │ │ │ progress = <rich.status.Status object at 0x7fed8645b350> │ │ │ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7fed86626de0> │ │ │ │ start_date = datetime.datetime(2023, 12, 13, 21, 19, 39, 408110) │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/user/Exegol/exegol/utils/ContainerLogStream.py:57 in __next__ │ │ │ │ 54 │ │ │ │ │ return line │ │ 55 │ │ │ │ else: │ │ 56 │ │ │ │ │ self.__enable_timeout = False # disable timeout if the container is │ │ ❱ 57 │ │ │ │ │ self.__line_buffer += streamed_char # add characters to the line bu │ │ 58 │ │ │ # When the data stream is empty, check if a timeout condition apply │ │ 59 │ │ │ if self.__enable_timeout and self.__until_date >= self.__timeout_date: │ │ 60 │ │ │ │ logger.debug("Container log stream timed-out") │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ self = <exegol.utils.ContainerLogStream.ContainerLogStream object at │ │ │ │ 0x7fed86483920> │ │ │ │ streamed_char = 'S' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ TypeError: can't concat str to bytes
My setup is a brand new Fedora 39 VM with podman-docker installed. Nothing too fancy IMHO.
Try to run it twice. I get the same error as yours on the first try, but it successfully starts the container anyway. On the second try, everything works as expected.
@polluxtroy3758 , on first try :
Then, on second try:
To sum it up, in order to have a working Exegol with podman on an up-to-date Fedora 39:
sudo dnf install podman-docker python3-pip
sudo systemctl enable --now podman.socket
git clone https://github.com/florentulve/Exegol.git
cd Exegol
git checkout feat/podman
sudo python3 -m pip install --requirement requirements.txt
sudo python3 exegol.py
First attempt at starting a container will return an error but starts the container anyway. Second attempt will give the expected result. From my first tests, GUI applications are working fine (tested with Firefox).
I will try to make it work without root rights.
Thanks for the PR, but podman support doesn't seem mature and stable enough to be added to the official Exegol as it is. So I'm going to draft the PR for the time being.
When I have time to fully add podman support, I'll be able to start from this PR, unless things change before then.
Thanks again for your help and interest in Exegol!
fix #182 first attempt to add podman support: starting a container work. I have not tested all use cases