Доступ к Redis CLI внутри контейнера Docker - PullRequest
0 голосов
/ 15 января 2019

У меня Redis работает внутри контейнера Docker .

docker run --rm -d --name "my_redis" redis

Я бы хотел получить к нему доступ через CLI:

Если я запускаю docker exec -it my_redis redis-cli, консоль перестает отвечать на запросы, пока я не покину контейнер (Ctrl + P, Ctrl + Q)

C:\Users\Andrzej>docker exec -it my_redis redis-cli
// nothing here until I go Ctrl + P, Ctrl + Q
exec attach failed: error on attach stdin: read escape sequence
C:\Users\Andrzej>

Если я запускаю docker exec -it my_redis sh, а затем запускаю redis-cli изнутри контейнера, это работает.

C:\Users\Andrzej>docker exec -it my_redis sh
# redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379>

Моя ОС - Windows 10.

Есть ли способ исправить поведение docker exec -it my_redis redis-cli?

UPDATE

Когда консоль перестает отвечать на запросы и я нажимаю клавишу «стрелка вверх» ровно 11 раз, я получаю команду Redis cli. Это на 100% воспроизводимо. Что это за магия вуду?

1 Ответ

0 голосов
/ 15 января 2019

Запустить контейнер redis в отдельном режиме:

docker run -d redis

Выполнить redis-cli на нем:

docker exec -it e0c061a5700bfa400f8f24b redis-cli

где e0c061a5700bfa400f8f24b - идентификатор контейнера.

Согласно документации:

Отдельно (-d)

Чтобы запустить контейнер в отдельном режиме, вы используете опцию -d = true или просто -d. Конструктивно контейнеры запускались в отдельном режиме, когда выход из корневого процесса, использованного для запуска контейнера, завершился, если вы не укажете опцию --rm. Если вы используете -d с --rm, контейнер удаляется при выходе или при выходе демона, в зависимости от того, что произойдет раньше.

.

- интерактивно, -i Держите STDIN открытым, даже если он не подключен

- tty, -t выделить псевдо-TTY

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