由于容器中是相互隔离的,容器中之间的通信需要建立自定义网络。
1. 创建网络
# 自定义 172.171.0.0 网段,子网掩码 255.255.0.0
docker network create --subnet=172.171.0.0/16 container-net
2. 拉取redis镜像
docker pull redis:latest
3. 启动 redis
# --network container-net 表示使用自建的网段,选择其中一个空闲IP
# -p 6379:6379 端口映射
# --ip 指定IP地址
# -v 挂载主机目录到容器中
# --name redis 修改容器名称
# redis:latest 使用的镜像
# redis-server --appendonly yes 启动 Redis 服务器命令,--appendonly yes 表示守护进程后台运行
docker run -d --network container-net --ip 172.171.0.20 -p 6379:6379 \
-v /data:/data --name redis redis:latest redis-server --appendonly yes
4. 测试 - 使用 shell 连接redis服务器
docker exec -it redis redis-cli
如下:
5. 在容器中,使用PHP连接Redis
$redis = new \Redis();
$connected = $redis->connect('172.171.0.20', 6379);
注意:
如果你在容器中运行PHP程序,在启动PHP容器环境时,必须添加 --network container-net 参数,以便容器之间互联