我在SO和Google上关注了其他问题的答案,但仍然无法连接。以下是我的尝试。感谢您提出的所有建议,以使它正常工作。
请注意,在此测试期间,所有防火墙均被禁用。
PS C:\WINDOWS\system32> docker run -d --name myredis -p 6379:6379 redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
f5d23c7fed46: Pull complete
a4a5c04dafc1: Pull complete
605bafc84bc9: Pull complete
f07a4e35cd96: Pull complete
17944e5e3eb7: Pull complete
6f875a8605e0: Pull complete
Digest: sha256:8888f6cd2509062a377e903e17777b4a6d59c92769f6807f034fa345da9eebcf
Status: Downloaded newer image for redis:latest
3f65a413985e513ef3e9a578b09a3c8729a214c767197d9e34268a38114e39c6
PS C:\WINDOWS\system32> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f65a413985e redis "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 0.0.0.0:6379->6379/tcp myredis
PS C:\WINDOWS\system32> docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myredis
172.17.0.2
PS C:\WINDOWS\system32> docker exec -it myredis redis-cli
127.0.0.1:6379> ping
PONG
上面的内容(对我而言)表明redis在docker映像上运行,并且正在docker映像和主机上的端口6379上侦听。从另一个Powershell,我为Windows运行redis客户端,它只是挂了
PS D:\Program Files\Redis> ./redis-cli
127.0.0.1:6379> connect 172.17.0.2 6379
该docker run -p
选项将服务的端口发布在主机的IP地址上,您可以从Docker外部连接到该端口。如果您专门在运行容器的同一物理主机的控制台上,则可以使用特殊主机名localhost
或匹配的特殊IPv4地址127.0.0.1
访问该容器。(不过,如果您在容器内,localhost
通常指“此容器”。)
在您最终redis-cli
连接到的命令中127.0.0.1:6379
,您已经连接到容器化的Redis:完成。
您永远不需要所返回的IP地址docker inspect
,并且在几种非常常见的设置中无法访问该IP地址。我建议绝对不要尝试查找它。例如,如果您在另一台主机上,或者您正在使用Docker for Mac或Docker Toolbox,则将无法访问Docker专用IP地址。完成此操作的方法docker run -p
是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句