今天使用docker安装redis,使用的时候出现了一些问题。第一次安装好后,在虚拟机后台启动了redis,然后在连接虚拟机的redis的时候怎么也连不上。出现这种情况我第一反应是防火墙没有开启所以我执行查看了一下防火墙的状态。
systemctl status firewalld
然后发现没有开启防火墙,于是我又开启了防火墙。
systemctl start firewalld
然而连接还是有问题,一直连接不上。然后我查看了一下doker的进程状态,发现redis是运行着的,但是端口映射没有做映射(使用doker启动的应用一定要做端口映射,否则外部无法访问该应用端口)。
于是我又重新删除该容器,重新启动了一个容器,并做了端口映射。
docker run -p 6379:6379 --name myredis -d registry.docker-cn.com/library/redis
但是问题来了,容器是创建了,然而缺一直启动不起来,启动容器会报下列问题。
docker: Error response from daemon: driver failed programming external connectivity on endpoint myredis (e189179ed97e6d940fe64c0c7c822beb430e5489c51c28d872aeabe95f1c60d0): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.2:6379 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
目前的解决方式是关闭docker,然后重新启动,再用docker启动redis重新 映射端口,redis容器终于正确启动并且能够被外部所访问了。
systemctl stop docker
systemctl start docker docker run -p 6379:6379 --name myredis -d registry.docker-cn.com/library/redis
|