温馨提示
本章节以 CentOS Stream
服务器为例,基于 Docker
容器化部署 Redis
服务。
镜像检索
去 Docker
官网 镜像仓库,搜索找到自己想要下载的镜像版本。
拉取镜像
js
# 默认拉取最新版本
docker pull redis
# 拉取指定版本
docker pull redis:6.0.9
拉取镜像输出过程:
js
[root@S1 usr]# docker pull redis:6.0.9
6.0.9: Pulling from library/redis
a076a628af6f: Pull complete
f40dd07fe7be: Pull complete
ce21c8a3dbee: Pull complete
47b0fe76214f: Pull complete
6c5e46e23ecb: Pull complete
e81e24116351: Pull complete
Digest: sha256:48c1431bed43fb2645314e4a22d6ca03cf36c5541d034de6a4f3330e7174915b
Status: Downloaded newer image for redis:6.0.9
docker.io/library/redis:6.0.9
创建容器
- 创建挂载目录和文件:
js
-- 注意:需要先创建挂载目录和redis.conf文件
mkdir -p /usr/local/docker/redis/conf
touch /usr/local/docker/redis/conf/redis.conf
或直接官网下载配置文件:
wget http://download.redis.io/redis-stable/redis.conf
修改启动默认配置(从上至下依次):
bind 127.0.0.1 #注释掉这部分,这限制了redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程。单机安装改yes,但是此处我们需要改为no,否则会使配置文件方式启动redis失败,因为docker内已经有失败后自动启动的机制,会发生冲突
databases 16 #数据库个数(可选),我修改了这个只是查看是否生效
dir ./ #输入本地redis数据库存放文件夹(可不加)
appendonly yes #redis持久化(可选)
requirepass 密码 #配置redis访问密码
- 创建并启动容器(守护进程方式):
js
1. 方式一
docker run -di --name=docker_redis -p 6379:6379 redis:6.0.9
2. 方式二
docker run -p 6379:6379 --name docker_redis \
-v /usr/local/docker/redis/data:/data \
-v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
--appendonly yes
-- 进入redis客户端:
docker exec -it docker_redis redis-cli
-- 存数据:
set a b
-- 取数据
get a
-- 修改redis数据持久化:
vi /usr/local/docker/redis/conf/redis.conf
-- 输入:
appendonly yes
:wq
-- 重启redis:
docker restart docker_redis
脚本部署
使用 docker-compose.yml
文件可以快速部署服务。通过定义服务、网络和卷等配置,Docker Compose
可以自动创建并启动容器,同时确保数据持久化和网络配置。
以下是一个简单的 docker-compose.yml
文件示例:
js
version: '3.7'
# 应用服务
services:
# 缓存服务
docker_redis:
# 容器名
container_name: docker_redis
# 容器引用镜像
image: redis:6.0.9
# 将容器运行在特权模式下,意味着容器内的进程将具
# 有访问宿主机的权限,包括文件系统、设备和系统功能等
privileged: true
# 启动策略为始终重启
restart: always
# 设置网络模式为host模式
network_mode: host
# 环境变量
environment:
- TZ=Asia/Shanghai
# 端口映射
ports:
- 6379:6379
# 文件挂载
volumes:
# 挂载数据目录
- $PWD/data:/data
# 挂载配置文件
- $PWD/conf/redis.conf:/etc/redis/redis.conf
# 挂载日志文件
- $PWD/logs:/logs
# 设置容器时区与宿主机保持一致
- /etc/localtime:/etc/localtime:ro
# 执行命名
command: redis-server --port 6379 --requirepass 123456 --appendonly yes
参数说明:
version: 指定 Docker Compose 文件的版本。
services: 定义服务,这里只有一个 mysql 服务。
image: 使用 MySQL 8.0 镜像。
container_name: 指定容器的名称。
environment: 设置环境变量,包括 root 用户密码、默认数据库、用户和密码。
ports: 将容器内的 3306 端口映射到主机的 3306 端口,以便从主机访问 MySQL。
volumes: 使用数据卷 mysql_data 持久化 MySQL 数据,确保数据在容器重启后不会丢失。
networks: 使用自定义网络 mysql_network,以便其他服务可以连接到 MySQL。
使用方法:
将上述
docker-compose.yml
文件上传至目标服务器。在终端中导航到该文件所在的目录。
运行以下命令启动 服务:
jsdocker-compose up -d
使用以下命令停止并删除容器:
jsdocker-compose down
如果需要保留数据卷,可以使用
docker-compose down --volumes
删除数据卷。
总结
通过以上步骤,你已经在 CentOS Stream
上使用 Docker
成功部署了 Redis
,并实现了配置文件和静态资源的持久化存储。这种方法便于管理和迁移,同时确保了数据的安全性。