Не удается подключиться к контейнеру Redis Docker с хоста, используя StackExchange.Redis - PullRequest
0 голосов
/ 14 марта 2019

Не уверен, что это проблема со строкой соединения или с моим изображением докера.Работает docker container ls Я вижу

57cb0c982c76 redis "docker-entrypoint.s…" 0.0.0.0:32773->6379/tcp

Порт, похоже, отображается снаружи.Я попытался запустить

docker run -d -P redis:alpine

с этим и другими различными вариантами параметров, используя драйвер StackExchange.Redis C #, и время ожидания истекло.Строка подключения выглядит так:

localhost:6379,ssl=True,abortConnect=False

(без пароля).Что я делаю не так?

ОБНОВЛЕНИЕ

Пробовал с docker run -d -p 6379:6379/tcp redis (также redis: alpine).Все еще не могу подключиться.docker inspect показывает HostConfig:

        "PortBindings": {
            "6379/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "6379"
                }
            ]
        }

1 Ответ

1 голос
/ 15 марта 2019

Поскольку вы запустили docker run -P (с большой буквы P), Docker выбирает порт хоста для каждого открытого порта в контейнере.Какой именно порт находится в выводе docker ps: 0.0.0.0:32773->6379/tcp означает, что Docker выбрал порт 32773, связанный со всеми интерфейсами хоста, для переадресации на TCP-порт 6379.

Это означает, что клиент Redis должен подключиться к некоторомуIP-адрес хоста на общедоступном порту 32773. Изменение 6379 на 32773 в строке подключения должно работать.

Чаще всего явно выбирают собственный порт;docker run -p 6379:6379 (в нижнем регистре p) будет использовать «обычный» порт Redis 6379 на хосте для перенаправления на порт Redis в контейнере.Единственным недостатком является то, что это может дать сбой, если что-то еще уже использует этот порт (демон Redis узла, какой-то другой контейнер).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...