Redis 是一种内存数据结构存储,可用作数据库、缓存或消息代理。它支持不同级别的磁盘持久性。
Docker网络
# 下载镜像并创建网络
docker image pull redis:alpine
docker image pull russmckendrick/moby-counter
docker network create moby-counter
# 启动容器 --network定义启动容器的网络
docker container run -d --name redis --network moby-counter redis:alpine
docker container run -d --name moby-counter --network moby-counter -p 8080:80 russmckendrick/moby-counter
docker container ls
# ping redis
docker container exec moby-counter ping -c 3 redis
# 查看本地网络缓存
docker container exec moby-counter cat /etc/hosts
# 查看DNS IP moby-counter为创建的网络
docker container exec moby-counter cat /etc/resolv.conf
# 查询dns解析记录
docker container exec moby-counter nslookup redis 127.0.0.11
docker network create moby-counter2
docker run -itd --name moby-counter2 --network moby-counter2 -p 9090:80 russmckendrick/moby-counter
# 无法解析redis 因为处于不同的网络中
docker container exec moby-counter2 ping -c 3 redis
docker container exec moby-counter2 cat /etc/resolv.conf
# 不能启动两个同名的容器
# 若也想使用redis,可通过--network-alias设置别名
docker container run -d --name redis2 --network moby-counter2 --network-alias redis redis:alpine
docker container exec moby-counter2 nslookup redis 127.0.0.1
Output:
Server: 127.0.0.1
Address 1: 127.0.0.1 localhost
Name: redis
Address 1: 172.19.0.3 redis2.moby-counter2
# redis实际上是redis2.moby-counter2的别名 解析成172.19.0.3
# 显示Docker主机上配置的所有网络
docker network ls
# 查看有关网络配置的更多信息
docker network inspect moby-counter
IP address management (IPAM)
IP 地址管理是一种在网络内规划、跟踪和管理 IP 地址的方法。
IPAM同时拥有DNS和DHCP服务
例如,DHCP为container2分配一个地址,然后更新DNS服务,以便在对Container2进行查找时返回DHCP分配的IP地址。Docker 卷(volumes)
# 当移除容器时 之前数据也无法使用
docker container stop redis
docker container rm redis
# redis Dockerfile 当容器启动时创建一个卷 /data
# 之前的数据保存在卷中
VOLUME /data
WORKDIR /data
docker volume ls
# 启动时换成自己的卷ID 即可访问之前数据
docker container run -d --name redis -v 45c4cb295fc831c085c49963a01f8e0f79534b9f0190af89321efec97b9d051f:/data --network moby-counter redis:alpine
# 若启动依旧未连接
docker container restart moby-counter
# 查看卷内容
docker container exec redis ls -lhat /data
# 再次删除
docker container stop redis
docker container rm redis
# 也可使用自己的卷进行覆盖
# 创建卷
docker volume create redis_data
# 使用自己创建redis_data卷来存储数据
docker container run -d --name redis -v redis_data:/data --network moby-counter redis:alpine