问题描述
我想在 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 上不受支持。