Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ERROR] The xhost command is not available on your host and can't access containers from previous install #194

Closed
MathisLec opened this issue Dec 5, 2023 · 4 comments
Labels
bug Something isn't working

Comments

@MathisLec
Copy link

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

  1. Basic install of exegol with pip3 and exegol containers availables from my previous install
  2. exegol start
  3. Select my container
  4. 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_
@MathisLec MathisLec added the bug Something isn't working label Dec 5, 2023
@MathisLec MathisLec changed the title [ERROR] The xhost command is not available on your host. [ERROR] The xhost command is not available on your host and can't access containers from previous install Dec 5, 2023
@Dramelac
Copy link
Member

Dramelac commented Dec 5, 2023

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 ?

@MathisLec
Copy link
Author

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?

@Dramelac
Copy link
Member

Dramelac commented Dec 5, 2023

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

@MathisLec
Copy link
Author

MathisLec commented Dec 5, 2023

  1. sudo pacman -S xorg-xhost
  2. xhost +SI:localuser:<user>
    See here.

And it works well.
Thanks a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants