[ERROR] The xhost command is not available on your host and can't access containers from previous install
MathisLec opened this issue · comments
Describe the bug
I have a fresh arch install using wayland as x server. After installing exegol correctly, I tried to get into a container from my previous install. Then, this error happened:
[-] The xhost command is not available on your host. Exegol was unable to allow your
container to access your graphical environment (or you don't have one).
[-] 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>/.venv/lib/python3.11/site-packages/docker/api/client.py:268 in │
│ _raise_for_status │
│ │
│ 265 │ def _raise_for_status(self, response): │
│ 266 │ │ """Raises stored :class:`APIError`, if one occurred.""" │
│ 267 │ │ try: │
│ ❱ 268 │ │ │ response.raise_for_status() │
│ 269 │ │ except requests.exceptions.HTTPError as e: │
│ 270 │ │ │ raise create_api_error_from_http_exception(e) from e │
│ 271 │
│ │
│ ╭───────────────────────────── locals ──────────────────────────────╮ │
│ │ response = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f43b6f19e10> │ │
│ ╰───────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/requests/models.py:1021 in │
│ raise_for_status │
│ │
│ 1018 │ │ │ ) │
│ 1019 │ │ │
│ 1020 │ │ if http_error_msg: │
│ ❱ 1021 │ │ │ raise HTTPError(http_error_msg, response=self) │
│ 1022 │ │
│ 1023 │ def close(self): │
│ 1024 │ │ """Releases the connection back to the pool. Once this method has be │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ http_error_msg = '400 Client Error: Bad Request for url: │ │
│ │ http+docker://localhost/v1.43/containers/'+70 │ │
│ │ reason = 'Bad Request' │ │
│ │ self = <Response [400]> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
HTTPError: 400 Client Error: Bad Request for url:
http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764258f6927f10dc2e2c806156
ae8a508922cfc43583/start
The above exception was the direct cause of the following exception:
╭───────────────────────── Traceback (most recent call last) ─────────────────────────╮
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolController.py:5 │
│ 9 in main │
│ │
│ 56 │ │ # Set logger verbosity depending on user input │
│ 57 │ │ ExeLog.setVerbosity(ParametersManager().verbosity, ParametersManager() │
│ 58 │ │ # Start Main controller & Executing action selected by user CLI │
│ ❱ 59 │ │ ExegolController.call_action() │
│ 60 │ except KeyboardInterrupt: │
│ 61 │ │ logger.empty_line() │
│ 62 │ │ logger.info("Exiting") │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolController.py:3 │
│ 9 in call_action │
│ │
│ 36 │ │ │ # Fetch main operation function │
│ 37 │ │ │ main_action = cls.__action() │
│ 38 │ │ │ # Execute main function │
│ ❱ 39 │ │ │ main_action() │
│ 40 │ │ else: │
│ 41 │ │ │ # TODO review required parameters │
│ 42 │ │ │ logger.error(f"These parameters are mandatory but missing: {','.jo │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolController.ExegolController'> │ │
│ │ main_action = <bound method ExegolManager.start of <class │ │
│ │ 'exegol.manager.ExegolManager.ExegolManager'>> │ │
│ │ missing_params = [] │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolManager.py:82 │
│ in start │
│ │
│ 79 │ │ if not container.isNew(): │
│ 80 │ │ │ # Check and warn user if some parameters don't apply to the curre │
│ 81 │ │ │ cls.__checkUselessParameters() │
│ ❱ 82 │ │ container.start() │
│ 83 │ │ container.spawnShell() │
│ 84 │ │
│ 85 │ @classmethod │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ │ container = <exegol.model.ExegolContainer.ExegolContainer object at │ │
│ │ 0x7f43b6dc0710> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/model/ExegolContainer.py:106 │
│ in start │
│ │
│ 103 │ │ │ logger.info(f"Starting container {self.name}") │
│ 104 │ │ │ self.preStartSetup() │
│ 105 │ │ │ with console.status(f"Waiting to start {self.name}", spinner_styl │
│ ❱ 106 │ │ │ │ self.__container.start() │
│ 107 │ │
│ 108 │ def stop(self, timeout: int = 10): │
│ 109 │ │ """Stop the docker container""" │
│ │
│ ╭──────────────────────────────────── locals ────────────────────────────────────╮ │
│ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7f43b6dc0710> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/models/containers.py:406 in │
│ start │
│ │
│ 403 │ │ │ :py:class:`docker.errors.APIError` │
│ 404 │ │ │ │ If the server returns an error. │
│ 405 │ │ """ │
│ ❱ 406 │ │ return self.client.api.start(self.id, **kwargs) │
│ 407 │ │
│ 408 │ def stats(self, **kwargs): │
│ 409 │ │ """ │
│ │
│ ╭────────────── locals ──────────────╮ │
│ │ kwargs = {} │ │
│ │ self = <Container: 445a28effb56> │ │
│ ╰────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/utils/decorators.py:19 in │
│ wrapped │
│ │
│ 16 │ │ │ │ raise errors.NullResource( │
│ 17 │ │ │ │ │ 'Resource ID was not provided' │
│ 18 │ │ │ │ ) │
│ ❱ 19 │ │ │ return f(self, resource_id, *args, **kwargs) │
│ 20 │ │ return wrapped │
│ 21 │ return decorator │
│ 22 │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ args = () │ │
│ │ f = <function ContainerApiMixin.start at 0x7f43b6e49c60> │ │
│ │ kwargs = {} │ │
│ │ resource_id = '445a28effb56275d3f4e764258f6927f10dc2e2c806156ae8a508922cfc43… │ │
│ │ resource_name = 'container' │ │
│ │ self = <docker.api.client.APIClient object at 0x7f43b6f19e10> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/api/container.py:1127 in │
│ start │
│ │
│ 1124 │ │ │ ) │
│ 1125 │ │ url = self._url("/containers/{0}/start", container) │
│ 1126 │ │ res = self._post(url) │
│ ❱ 1127 │ │ self._raise_for_status(res) │
│ 1128 │ │
│ 1129 │ @utils.check_resource('container') │
│ 1130 │ def stats(self, container, decode=None, stream=True, one_shot=None): │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ args = () │ │
│ │ container = '445a28effb56275d3f4e764258f6927f10dc2e2c806156ae8a508922cfc43583' │ │
│ │ kwargs = {} │ │
│ │ res = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f43b6f19e10> │ │
│ │ url = 'http+docker://localhost/v1.43/containers/445a28effb56275d3f4e7642… │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/api/client.py:270 in │
│ _raise_for_status │
│ │
│ 267 │ │ try: │
│ 268 │ │ │ response.raise_for_status() │
│ 269 │ │ except requests.exceptions.HTTPError as e: │
│ ❱ 270 │ │ │ raise create_api_error_from_http_exception(e) from e │
│ 271 │ │
│ 272 │ def _result(self, response, json=False, binary=False): │
│ 273 │ │ assert not (json and binary) │
│ │
│ ╭───────────────────────────── locals ──────────────────────────────╮ │
│ │ response = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f43b6f19e10> │ │
│ ╰───────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/errors.py:39 in │
│ create_api_error_from_http_exception │
│ │
│ 36 │ │ │ cls = ImageNotFound │
│ 37 │ │ else: │
│ 38 │ │ │ cls = NotFound │
│ ❱ 39 │ raise cls(e, response=response, explanation=explanation) from e │
│ 40 │
│ 41 │
│ 42 class APIError(requests.exceptions.HTTPError, DockerException): │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'docker.errors.APIError'> │ │
│ │ e = HTTPError('400 Client Error: Bad Request for url: │ │
│ │ http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764… │ │
│ │ explanation = 'invalid mount config for type "bind": bind source path does not │ │
│ │ exist: /etc/time'+4 │ │
│ │ response = <Response [400]> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
APIError: 400 Client Error for
http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764258f6927f10dc2e2c806156
ae8a508922cfc43583/start: Bad Request ("invalid mount config for type "bind": bind
source path does not exist: /etc/timezone")
Steps To Reproduce
- Basic install of exegol with pip3 and exegol containers availables from my previous install
exegol start
- Select my container
- Error
Exegol Wrapper Version
❯ exegol stop
[*] Exegol is currently in version v4.2.5
[*] 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 💚
[*] Stopping exegol
👽 Available containers
┌───────────────┬─────────┬───────────┬───────────────────────┐
│ Container tag │ State │ Image tag │ Configurations │
├───────────────┼─────────┼───────────┼───────────────────────┤
│ new │ Running │ full │ Default configuration │
│ THM │ Stopped │ full │ Default configuration │
│ ECW │ Stopped │ full │ Default configuration │
│ crackme │ Stopped │ full │ Default configuration │
│ ESGI │ Stopped │ full │ Default configuration │
└───────────────┴─────────┴───────────┴───────────────────────┘
[?] Select a container by its name (new): new
[?] Do you want to select another container? [y/N]:
[*] Stopping container new
❯ exegol version -vvv
[*] Exegol is currently in version v4.2.5
[*] 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 💚
[D] Pip installation: On ✔
[D] Git source installation: Off 🪓
[D] Host OS: HostOs.LINUX (DockerEngine.LINUX)
[D] Arch: amd64
[D] Raw arch: x86_64
[D] Docker desktop: Off 🪓
[D] Shell type: HostOs.LINUX
[D] Last wrapper update check: 2023-12-04 00:00:00
### Host OS
Linux
### Configuration of the concerned container
```Text
❯ exegol start
[*] Exegol is currently in version v4.2.5
[*] 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 💚
[*] Starting exegol
👽 Available containers
┌───────────────┬─────────┬───────────┬───────────────────────┐
│ Container tag │ State │ Image tag │ Configurations │
├───────────────┼─────────┼───────────┼───────────────────────┤
│ new │ Stopped │ full │ Default configuration │
│ THM │ Stopped │ full │ Default configuration │
│ ECW │ Stopped │ full │ Default configuration │
│ crackme │ Stopped │ full │ Default configuration │
│ ESGI │ Stopped │ full │ Default configuration │
└───────────────┴─────────┴───────────┴───────────────────────┘
[*] You can use a name that does not already exist to create a new container
[?] Select a container by its name (new): ^C
[*] Exiting
❯ exegol info -v crackme
[*] Exegol is currently in version v4.2.5
[*] 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 💚
[V] Listing user configurations
🧠 User configurations
┌────────────────────────────────────────────────────────┐
│ User config file: /home/<user>/.exegol/config.yml │
│ Private workspace: /home/<user>/.exegol/workspaces │
│ Exegol resources: /home/<user>/.exegol/exegol-resources │
│ My resources: /home/<user>/.exegol/my-resources │
│ Auto-check updates: On ✔ │
│ Auto-remove images: On ✔ │
│ Auto-update fs: Off 🪓 │
│ Default start shell: zsh │
│ Shell logging method: asciinema │
│ Shell logging compression: On ✔ │
└────────────────────────────────────────────────────────┘
⭐ Container summary
┌──────────────────┬──────────────────────────────────────────────────────────────────┐
│ Name │ crackme │
│ Image │ full - v.3.1.1 (Up to date) (amd64) │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Creation date │ 29/09/2023 14:34 │
│ GUI │ On ✔ │
│ Network │ host │
│ Timezone │ On ✔ │
│ Exegol resources │ On ✔ (/opt/resources) │
│ My resources │ On ✔ (/opt/my-resources) │
│ Shell logging │ Off 🪓 │
│ Privileged │ Off ✔ │
│ Workspace │ Dedicated (/workspace) │
│ Envs │ DISPLAY=:0 │
│ │ _JAVA_AWT_WM_NONREPARENTING=1 │
│ │ QT_X11_NO_MITSHM=1 │
│ │ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/b… │
│ Volumes │ /etc/timezone ➡ /etc/timezone (RO) │
│ │ /home/<user>/.exegol/my-resources ➡ /opt/my-resources │
│ │ /home/<user>/.exegol/exegol-resources ➡ /opt/resources │
│ │ /tmp/.X11-unix ➡ /tmp/.X11-unix │
│ │ /home/<user>/.exegol/workspaces/crackme ➡ /workspace │
│ │ /etc/localtime ➡ /etc/localtime (RO) │
└──────────────────┴──────────────────────────────────────────────────────────────────┘
### Execution logs in debug mode
```Text
❯ exegol -vvv start
[*] Exegol is currently in version v4.2.5
[*] 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 💚
[*] Starting exegol
👽 Available containers
┌───────────────┬─────────┬───────────┬───────────────────────┐
│ Container tag │ State │ Image tag │ Configurations │
├───────────────┼─────────┼───────────┼───────────────────────┤
│ new │ Stopped │ full │ Default configuration │
│ THM │ Stopped │ full │ Default configuration │
│ ECW │ Stopped │ full │ Default configuration │
│ crackme │ Stopped │ full │ Default configuration │
│ ESGI │ Stopped │ full │ Default configuration │
└───────────────┴─────────┴───────────┴───────────────────────┘
[*] You can use a name that does not already exist to create a new container
[?] Select a container by its name (new): ESGI
[*] Starting container ESGI
[-] The xhost command is not available on your host. Exegol was unable to allow your
container to access your graphical environment (or you don't have one).
[-] 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>/.venv/lib/python3.11/site-packages/docker/api/client.py:268 in │
│ _raise_for_status │
│ │
│ 265 │ def _raise_for_status(self, response): │
│ 266 │ │ """Raises stored :class:`APIError`, if one occurred.""" │
│ 267 │ │ try: │
│ ❱ 268 │ │ │ response.raise_for_status() │
│ 269 │ │ except requests.exceptions.HTTPError as e: │
│ 270 │ │ │ raise create_api_error_from_http_exception(e) from e │
│ 271 │
│ │
│ ╭───────────────────────────── locals ──────────────────────────────╮ │
│ │ response = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f1a9269ddd0> │ │
│ ╰───────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/requests/models.py:1021 in │
│ raise_for_status │
│ │
│ 1018 │ │ │ ) │
│ 1019 │ │ │
│ 1020 │ │ if http_error_msg: │
│ ❱ 1021 │ │ │ raise HTTPError(http_error_msg, response=self) │
│ 1022 │ │
│ 1023 │ def close(self): │
│ 1024 │ │ """Releases the connection back to the pool. Once this method has be │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ http_error_msg = '400 Client Error: Bad Request for url: │ │
│ │ http+docker://localhost/v1.43/containers/'+70 │ │
│ │ reason = 'Bad Request' │ │
│ │ self = <Response [400]> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
HTTPError: 400 Client Error: Bad Request for url:
http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764258f6927f10dc2e2c806156
ae8a508922cfc43583/start
The above exception was the direct cause of the following exception:
╭───────────────────────── Traceback (most recent call last) ─────────────────────────╮
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolController.py:5 │
│ 9 in main │
│ │
│ 56 │ │ # Set logger verbosity depending on user input │
│ 57 │ │ ExeLog.setVerbosity(ParametersManager().verbosity, ParametersManager() │
│ 58 │ │ # Start Main controller & Executing action selected by user CLI │
│ ❱ 59 │ │ ExegolController.call_action() │
│ 60 │ except KeyboardInterrupt: │
│ 61 │ │ logger.empty_line() │
│ 62 │ │ logger.info("Exiting") │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolController.py:3 │
│ 9 in call_action │
│ │
│ 36 │ │ │ # Fetch main operation function │
│ 37 │ │ │ main_action = cls.__action() │
│ 38 │ │ │ # Execute main function │
│ ❱ 39 │ │ │ main_action() │
│ 40 │ │ else: │
│ 41 │ │ │ # TODO review required parameters │
│ 42 │ │ │ logger.error(f"These parameters are mandatory but missing: {','.jo │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolController.ExegolController'> │ │
│ │ main_action = <bound method ExegolManager.start of <class │ │
│ │ 'exegol.manager.ExegolManager.ExegolManager'>> │ │
│ │ missing_params = [] │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/manager/ExegolManager.py:82 │
│ in start │
│ │
│ 79 │ │ if not container.isNew(): │
│ 80 │ │ │ # Check and warn user if some parameters don't apply to the curre │
│ 81 │ │ │ cls.__checkUselessParameters() │
│ ❱ 82 │ │ container.start() │
│ 83 │ │ container.spawnShell() │
│ 84 │ │
│ 85 │ @classmethod │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'exegol.manager.ExegolManager.ExegolManager'> │ │
│ │ container = <exegol.model.ExegolContainer.ExegolContainer object at │ │
│ │ 0x7f1a9274a810> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/exegol/model/ExegolContainer.py:106 │
│ in start │
│ │
│ 103 │ │ │ logger.info(f"Starting container {self.name}") │
│ 104 │ │ │ self.preStartSetup() │
│ 105 │ │ │ with console.status(f"Waiting to start {self.name}", spinner_styl │
│ ❱ 106 │ │ │ │ self.__container.start() │
│ 107 │ │
│ 108 │ def stop(self, timeout: int = 10): │
│ 109 │ │ """Stop the docker container""" │
│ │
│ ╭──────────────────────────────────── locals ────────────────────────────────────╮ │
│ │ self = <exegol.model.ExegolContainer.ExegolContainer object at 0x7f1a9274a810> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/models/containers.py:406 in │
│ start │
│ │
│ 403 │ │ │ :py:class:`docker.errors.APIError` │
│ 404 │ │ │ │ If the server returns an error. │
│ 405 │ │ """ │
│ ❱ 406 │ │ return self.client.api.start(self.id, **kwargs) │
│ 407 │ │
│ 408 │ def stats(self, **kwargs): │
│ 409 │ │ """ │
│ │
│ ╭────────────── locals ──────────────╮ │
│ │ kwargs = {} │ │
│ │ self = <Container: 445a28effb56> │ │
│ ╰────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/utils/decorators.py:19 in │
│ wrapped │
│ │
│ 16 │ │ │ │ raise errors.NullResource( │
│ 17 │ │ │ │ │ 'Resource ID was not provided' │
│ 18 │ │ │ │ ) │
│ ❱ 19 │ │ │ return f(self, resource_id, *args, **kwargs) │
│ 20 │ │ return wrapped │
│ 21 │ return decorator │
│ 22 │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ args = () │ │
│ │ f = <function ContainerApiMixin.start at 0x7f1a927c9c60> │ │
│ │ kwargs = {} │ │
│ │ resource_id = '445a28effb56275d3f4e764258f6927f10dc2e2c806156ae8a508922cfc43… │ │
│ │ resource_name = 'container' │ │
│ │ self = <docker.api.client.APIClient object at 0x7f1a9269ddd0> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/api/container.py:1127 in │
│ start │
│ │
│ 1124 │ │ │ ) │
│ 1125 │ │ url = self._url("/containers/{0}/start", container) │
│ 1126 │ │ res = self._post(url) │
│ ❱ 1127 │ │ self._raise_for_status(res) │
│ 1128 │ │
│ 1129 │ @utils.check_resource('container') │
│ 1130 │ def stats(self, container, decode=None, stream=True, one_shot=None): │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ args = () │ │
│ │ container = '445a28effb56275d3f4e764258f6927f10dc2e2c806156ae8a508922cfc43583' │ │
│ │ kwargs = {} │ │
│ │ res = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f1a9269ddd0> │ │
│ │ url = 'http+docker://localhost/v1.43/containers/445a28effb56275d3f4e7642… │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/api/client.py:270 in │
│ _raise_for_status │
│ │
│ 267 │ │ try: │
│ 268 │ │ │ response.raise_for_status() │
│ 269 │ │ except requests.exceptions.HTTPError as e: │
│ ❱ 270 │ │ │ raise create_api_error_from_http_exception(e) from e │
│ 271 │ │
│ 272 │ def _result(self, response, json=False, binary=False): │
│ 273 │ │ assert not (json and binary) │
│ │
│ ╭───────────────────────────── locals ──────────────────────────────╮ │
│ │ response = <Response [400]> │ │
│ │ self = <docker.api.client.APIClient object at 0x7f1a9269ddd0> │ │
│ ╰───────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/<user>/.venv/lib/python3.11/site-packages/docker/errors.py:39 in │
│ create_api_error_from_http_exception │
│ │
│ 36 │ │ │ cls = ImageNotFound │
│ 37 │ │ else: │
│ 38 │ │ │ cls = NotFound │
│ ❱ 39 │ raise cls(e, response=response, explanation=explanation) from e │
│ 40 │
│ 41 │
│ 42 class APIError(requests.exceptions.HTTPError, DockerException): │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ cls = <class 'docker.errors.APIError'> │ │
│ │ e = HTTPError('400 Client Error: Bad Request for url: │ │
│ │ http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764… │ │
│ │ explanation = 'invalid mount config for type "bind": bind source path does not │ │
│ │ exist: /etc/time'+4 │ │
│ │ response = <Response [400]> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
APIError: 400 Client Error for
http+docker://localhost/v1.43/containers/445a28effb56275d3f4e764258f6927f10dc2e2c806156
ae8a508922cfc43583/start: Bad Request ("invalid mount config for type "bind": bind
source path does not exist: /etc/timezone")
### Exception
_No response_
### Anything else?
_No response_
Hello
You error seems to be related to /etc/timezone
not xhost. The xhost warning is an indicator of why GUI may not working. But the crash is because docker can't find /etc/timezone.
Can you ls -l to check ?
Hello,
Thanks for your help.
I've set up the file and can now access my containers.
However, I still can't access the GUI tools. Should I install a Xorg server? or just install xhost tool?
Good news then :)
However, I still can't access the GUI tools. Should I install a Xorg server? or just install xhost tool?
Try to install the xorg-xhost package and see if it fix your problem