我尝试从 Docker 容器内部连接到本地 Redis 服务器,但未成功。这是我到目前为止所做的设置:
我已在我的主机上运行 Redis。我可以通过
redis-cli
连接到它。
我从 Ubuntu 映像启动了一个交互式 Docker 容器。
我已在 Docker 容器内安装了
redis-tools
。
我尝试通过
redis-cli
连接到Redis:
redis-cli -h 172.17.0.3 -p 6379
172.17.0.3
是我通过Docker容器内的ifconfig
获得的IP地址。
我将
bind 0.0.0.0
附加到本地 Redis 的 redis.conf
。
完成所有设置后,我尝试运行 Docker 容器。但是,我收到一条错误消息,指出“连接被拒绝”。
然后,我在运行 Docker 容器时尝试将端口
6379
转发到 6379
,但收到了不同的错误,指出该地址已在使用中。
为了获得有效的连接,我没有想到什么技巧?预先感谢!
您不应该连接到容器的 IP 地址,而应该连接到主机的 IP 地址(您在 Docker 桥接器的主机上看到的 IP 地址)。看你的问题应该是
172.17.0.1
你可以这样做:
$host_ip
docker run -it --add-host redis_server:$host_ip ubuntu bash
现在,从容器内部,您将能够通过在主机上运行的主机名
redis_server
访问 Redis 服务器。
只需使用这个命令
“docker run --network=host -p port:port IMAGE”
不仅是 Redis,您在 docker 上需要的本地主机上运行的所有服务都可以与此一起使用。
在容器之间使用link。
docker run -d --name=redis_xyz redis
docker run -it --link redis_xyz:redis_local redis_cli_image redis-cli -h redis_local