Я использую последний образ докера Cassandra. Когда я запускаю его с привилегиями root, cqlsh может подключиться к службе Cassandra, как и ожидалось:
$ sudo docker run --name mycassandra -d cassandra:latest
$ sudo docker exec -it mycassandra bash
# cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.3 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>
Однако, если я запускаю образ докера с обычными правами пользователя, я получаю сообщение об ошибке при использовании cqlsh:
$ docker run --name mycassandra1 -d cassandra:latest
$ docker exec -it mycassandra1 bash
# cqlsh
Connection error: ('Unable to connect to any servers', {'127.0.0.1:9042':
ConnectionRefusedError(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error:
Connection refused")})
Я предпочитаю не запускать образ докера как sudo. Интересно, почему для образа Cassandra требуются привилегии sudo. Спасибо.
Похоже, вы являетесь членом группы docker
, так как вы можете запускать докер без sudo. Независимо от того, запускаете ли вы его с помощью sudo или без него, это не должно иметь значения. Контейнер запускается от имени пользователя root в обоих случаях, что вы можете проверить с помощью командной строки #
bash в обоих случаях.
Я думаю, что происходит то, что вы пытаетесь запустить cqlsh
до того, как контейнер завершит запуск. Проверьте журнал контейнера и убедитесь, что вы видите Startup complete
, прежде чем пытаться запустить cqlsh
.
Спасибо. Ты абсолютно прав. Команда работает после ожидания в течение некоторого времени.