Skip to content

温馨提示

本章节以 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 文件上传至目标服务器。

  • 在终端中导航到该文件所在的目录。

    运行以下命令启动 服务:

    js
    docker-compose up -d

    使用以下命令停止并删除容器:

    js
    docker-compose down
  • 如果需要保留数据卷,可以使用 docker-compose down --volumes 删除数据卷。

总结

通过以上步骤,你已经在 CentOS Stream 上使用 Docker 成功部署了 Redis,并实现了配置文件和静态资源的持久化存储。这种方法便于管理和迁移,同时确保了数据的安全性。

小蚂蚁云团队 · 提供技术支持

小蚂蚁云 新品首发
新品首发,限时特惠,抢购从速! 全场95折
赋能开发者,助理企业发展,提供全方位数据中台解决方案。
获取官方授权