由于容器中是相互隔離的,容器中之間的通信需要建立自定義網(wǎng)絡(luò)谤草。
1. 創(chuàng)建網(wǎng)絡(luò)
# 自定義 172.171.0.0 網(wǎng)段衙傀,子網(wǎng)掩碼 255.255.0.0
docker network create --subnet=172.171.0.0/16 container-net
2. 拉取redis鏡像
docker pull redis:latest
3. 啟動(dòng) redis
# --network container-net 表示使用自建的網(wǎng)段抬吟,選擇其中一個(gè)空閑IP
# -p 6379:6379 端口映射
# --ip 指定IP地址
# -v 掛載主機(jī)目錄到容器中
# --name redis 修改容器名稱
# redis:latest 使用的鏡像
# redis-server --appendonly yes 啟動(dòng) Redis 服務(wù)器命令,--appendonly yes 表示守護(hù)進(jìn)程后臺(tái)運(yùn)行
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. 測(cè)試 - 使用 shell 連接redis服務(wù)器
docker exec -it redis redis-cli
如下:
5. 在容器中统抬,使用PHP連接Redis
$redis = new \Redis();
$connected = $redis->connect('172.171.0.20', 6379);
注意:
如果你在容器中運(yùn)行PHP程序火本,在啟動(dòng)PHP容器環(huán)境時(shí)危队,必須添加 --network container-net 參數(shù),以便容器之間互聯(lián)