在 docker 网络模式主机上运行 Redis

问题描述

我想在 docker 中运行网络模式作为 Redis 集群的主机。

redis image of docker hub中执行的命令,写成如下。

docker run --name some-redis -d redis

通过提供 -p 选项执行端口映射后:

docker run -p 6379:6379 --name some-redis redis

如果连接到redis-cli,则连接良好。

> redis-cli -p 6379

127.0.0.1:6379>

如果用docker container inspect some-redis看网络,认网络模式是bridge。

"Networks": {
                "bridge": {
                    "IPAMConfig": null,"Links": null,"Aliases": null,

我试图继续与主持人联系。

docker run --net=host -p 6379:6379 --name some-redis redis
WARNING: Published ports are discarded when using host network mode

如果显示诸如,之类的短语,则不会公开端口。

CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS          PORTS                                            NAMES
6f4edb2c4f8a   redis                        "docker-entrypoint.s…"   5 seconds ago    Up 4 seconds                                                     some-redis

当然,你甚至无法连接到 redis-cli。

> redis-cli -p 6379

Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Docker container doesn't expose ports when --net=host is mentioned in the docker run command

看上面的问题,好像端口应该是自动公开的。

如何在 docker redis 中暴露网络模式主机的端口?

解决方法

检查您的机器,--net=host 仅适用于 linux。 https://docs.docker.com/network/host/

主机网络驱动程序仅适用于 Linux 主机,在 Docker Desktop for Mac、Docker Desktop for Windows 或 Docker EE for Windows Server 上不受支持。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...