为什么 Cassandra docker 映像需要 运行 的 root 权限?

Why does Cassandra docker image require root privileges to run?

我正在使用最新的 Cassandra docker 图像。当我 运行 它具有 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> 

但是,如果我 运行 docker image 具有普通用户权限,我在使用 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")})

我不喜欢 运行 docker 图像作为 sudo。想知道为什么 Cassandra 图像需要 sudo 权限。谢谢

看来您是 docker 组的成员,因为您可以 运行 docker 不使用 sudo。无论你 运行 有没有 sudo 都不应该有什么不同。在这两种情况下,容器 运行 都是根目录,您可以在这两种情况下通过 # bash 提示进行验证。

我认为正在发生的事情是您试图 运行 cqlsh 在容器完成启动之前。检查容器日志并确保在尝试 运行ning cqlsh.

之前看到 Startup complete