Torizon IDE backend cannot access docker on Windows / WSL2

Hi,

After a Docker Desktop update on Win10 (-> Docker version 4.19.0 build 106363 → newest version available today), Torizon IDE backend is not able to access docker anymore.

I am running VSCode Toradex Torizon Support (Early Access v1.6.6)

The OUTPUT message on VSCode shows:

[04-22 07:31:31.997] Initializing Torizon Extension
[04-22 07:31:32.080] Checking system setup...
[04-22 07:31:32.081] Docker seem to not be enabled for current user, this will prevent many of the features of Torizon extension from working.
You may add your user to the docker group or run the Torizon IDE backend with an account that is part of that group.
[04-22 07:31:32.083] Checking Moses ...
[04-22 07:31:32.119] Starting backend local instance running on port 5001
[04-22 07:31:48.112] Torizon Backend version 1.0.0 API version: 1.1.7
[04-22 07:31:48.113] Torizon IDE backend started
[04-22 07:31:48.114] Checking Docker ...

(the last action Checking Docker is lasting forever).
The message suggests a group issue but I checked that user torizon is indeed part of the docker group:

torizon@docker-desktop:~$ cat /etc/group |grep torizon
sudo:x:27:torizon
torizon:x:1000:
docker:x:0:torizon

The Torizon IDE backend process log shows :

INFO:root:REST -> /api/version/docker
DEBUG:connexion.apis.flask_api:Getting data and status code
DEBUG:connexion.decorators.parameter:Function Arguments: []
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
ERROR:root:docker version
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 489, in send
  File "urllib3/connectionpool.py", line 755, in urlopen
  File "urllib3/util/retry.py", line 531, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 600, in get
  File "requests/sessions.py", line 587, in request
  File "requests/sessions.py", line 701, in send
  File "requests/adapters.py", line 547, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "api.py", line 134, in version_docker_get
  File "docker/client.py", line 96, in from_env
  File "docker/client.py", line 45, in __init__
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error: 530 Local docker exception. Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Exception: Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
INFO:root:REST <- /api/version/docker - 530
INFO:root:REST -> /api/version/docker
DEBUG:connexion.apis.flask_api:Getting data and status code
DEBUG:connexion.decorators.parameter:Function Arguments: []
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
ERROR:root:docker version
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 489, in send
  File "urllib3/connectionpool.py", line 755, in urlopen
  File "urllib3/util/retry.py", line 531, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 600, in get
  File "requests/sessions.py", line 587, in request
  File "requests/sessions.py", line 701, in send
  File "requests/adapters.py", line 547, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "api.py", line 134, in version_docker_get
  File "docker/client.py", line 96, in from_env
  File "docker/client.py", line 45, in __init__
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error: 530 Local docker exception. Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Exception: Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
INFO:root:REST <- /api/version/docker - 530
INFO:root:REST -> /api/version/docker
DEBUG:connexion.apis.flask_api:Getting data and status code
DEBUG:connexion.decorators.parameter:Function Arguments: []
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
ERROR:root:docker version
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 489, in send
  File "urllib3/connectionpool.py", line 755, in urlopen
  File "urllib3/util/retry.py", line 531, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 600, in get
  File "requests/sessions.py", line 587, in request
  File "requests/sessions.py", line 701, in send
  File "requests/adapters.py", line 547, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "api.py", line 134, in version_docker_get
  File "docker/client.py", line 96, in from_env
  File "docker/client.py", line 45, in __init__
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error: 530 Local docker exception. Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Exception: Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
INFO:root:REST <- /api/version/docker - 530
INFO:root:REST -> /api/version/docker
DEBUG:connexion.apis.flask_api:Getting data and status code
DEBUG:connexion.decorators.parameter:Function Arguments: []
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
ERROR:root:docker version
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 489, in send
  File "urllib3/connectionpool.py", line 755, in urlopen
  File "urllib3/util/retry.py", line 531, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 600, in get
  File "requests/sessions.py", line 587, in request
  File "requests/sessions.py", line 701, in send
  File "requests/adapters.py", line 547, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "api.py", line 134, in version_docker_get
  File "docker/client.py", line 96, in from_env
  File "docker/client.py", line 45, in __init__
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error: 530 Local docker exception. Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Exception: Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
INFO:root:REST <- /api/version/docker - 530
INFO:root:REST -> /api/version/docker
DEBUG:connexion.apis.flask_api:Getting data and status code
DEBUG:connexion.decorators.parameter:Function Arguments: []
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
DEBUG:docker.utils.config:Trying paths: ['/home/torizon/.docker/config.json', '/home/torizon/.dockercfg']
DEBUG:docker.utils.config:No config file found
ERROR:root:docker version
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 489, in send
  File "urllib3/connectionpool.py", line 755, in urlopen
  File "urllib3/util/retry.py", line 531, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 699, in urlopen
  File "urllib3/connectionpool.py", line 394, in _make_request
  File "http/client.py", line 1285, in request
  File "http/client.py", line 1331, in _send_request
  File "http/client.py", line 1280, in endheaders
  File "http/client.py", line 1040, in _send_output
  File "http/client.py", line 980, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 600, in get
  File "requests/sessions.py", line 587, in request
  File "requests/sessions.py", line 701, in send
  File "requests/adapters.py", line 547, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "api.py", line 134, in version_docker_get
  File "docker/client.py", line 96, in from_env
  File "docker/client.py", line 45, in __init__
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error: 530 Local docker exception. Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Exception: Docker exception: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
ERROR:root:Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
INFO:root:REST <- /api/version/docker - 530

It confirms a permission issue. It seems moses is looking at /home/torizon/.docker/config.json, which indeed does not exist:

torizon@docker-desktop:~$ pwd
/home/torizon
torizon@docker-desktop:~$ ls -la
total 304528
drwxr-xr-x 1 torizon root         4096 May 22 07:31 .
drwxr-xr-x 1 root    root         4096 Sep 17  2022 ..
drwxr-xr-x 3 torizon torizon      4096 May 19 16:12 .cache
drwxr-xr-x 2 torizon torizon      4096 May 19 16:11 .devcontainer
drwxr-xr-x 3 torizon torizon      4096 May 19 16:12 .dotnet
drwxr-xr-x 1 root    root         4096 May 19 14:52 .gdb
-rw-r--r-- 1 root    root          157 May 19 14:52 .gdbinit
-rw-r--r-- 1 torizon torizon       571 May 22 07:31 .gitconfig
drwxr-xr-x 3 torizon torizon      4096 May 19 16:12 .local
drwxrwxrwx 1 root    root         4096 Dec 16  2021 .moses
drwxr-xr-x 2 torizon torizon      4096 May 19 16:11 .ssh
drwxr-xr-x 6 torizon torizon      4096 May 19 16:11 .vscode-server
drwxr-xr-x 3 torizon torizon      4096 May 19 16:11 .vscode-server-insiders

I can’t find my way out of this issue. Do you have some advice ?

Best regards,
Fabian

Hello @fdortu

This issue could be related to the Docker version that you are using, as in this thread
https://community.toradex.com/t/checking-docker-vscode-torizon-extension-hangs/19548/4

Could you try with docker v4.18.0 and check if it works?

Best regards,
Josep

Hi Josep,

Rolling back to Docker 4.18 solves the problem.

Best regards,
Fabian