osrf / rocker

A tool to run docker containers with overlays and convenient options for things like GUIs etc.
Apache License 2.0
559 stars 73 forks source link

KeyError: 'http+docker' anytime I use command 'rocker' #283

Open BaoJie456 opened 3 weeks ago

BaoJie456 commented 3 weeks ago

I met this problem when I was using 'rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware:latest-runtime-cuda'. Then I found it happens everytime I use command 'rocker'. It seems a package problem from rocker, not related to other packages.

The commands I tried:

  1. rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware:latest-runtime-cuda
  2. rocker --version
  3. rocker

The terminal screenshot:

image

The log:

Traceback (most recent call last): File "/usr/bin/rocker", line 33, in sys.exit(load_entry_point('rocker==0.2.16', 'console_scripts', 'rocker')()) File "/usr/lib/python3/dist-packages/rocker/cli.py", line 45, in main extension_manager.extend_cli_parser(parser, default_args) File "/usr/lib/python3/dist-packages/rocker/core.py", line 131, in extend_cli_parser p.register_arguments(parser, default_args) File "/usr/lib/python3/dist-packages/rocker/extensions.py", line 160, in register_arguments client = get_docker_client() File "/usr/lib/python3/dist-packages/rocker/core.py", line 217, in get_docker_client docker_client.ping() File "/usr/lib/python3/dist-packages/docker/api/daemon.py", line 166, in ping return self._result(self._get(self._url('/_ping'))) == 'OK' File "/usr/lib/python3/dist-packages/docker/utils/decorators.py", line 46, in inner return f(self, *args, kwargs) File "/usr/lib/python3/dist-packages/docker/api/client.py", line 230, in _get return self.get(url, self._set_request_timeout(kwargs)) File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 602, in get return self.request("GET", url, kwargs) File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 589, in request resp = self.send(prep, send_kwargs) File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 703, in send r = adapter.send(request, **kwargs) File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 633, in send conn = self.get_connection_with_tls_context( File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 489, in get_connection_with_tls_context conn = self.poolmanager.connection_from_host( File "/usr/lib/python3/dist-packages/urllib3/poolmanager.py", line 234, in connection_from_host return self.connection_from_context(request_context) File "/usr/lib/python3/dist-packages/urllib3/poolmanager.py", line 244, in connection_from_context pool_key_constructor = self.key_fn_by_scheme[scheme] KeyError: 'http+docker'

The system and environment

Ubuntu 20.04 python3-rocker 0.2.16-100

Thanks for your help!

tfoote commented 2 weeks ago

Please cross reference issues if you're filing them in multiple places. I only found the relevant discussion at: https://github.com/docker/docker-py/issues/3279 which was started by you.

This looks a lot like a reoccurrence of https://github.com/osrf/rocker/issues/278 with a compatability issue between docker-py and the requests library so I think that the docker-py issue is the correct place to follow up.

Make sure that you're using the 7.1.0 or higher version of docker py with the fix https://github.com/docker/docker-py/issues/3256#issuecomment-2291044134