解决:docker创建Redis容器成功,但无法启动Redis容器、也无报错提示

解决:docker创建Redis容器成功,但无法启动Redis容器、也无报错提示

  • 一·问题描述:
    • 1.docker若是直接简单使用run命令,但不挂载容器数据卷等参数,则可以启动Redis容器
    • 2.docker复杂使用run命令,使用指定redis.conf文件后台启动Redis服务、且挂载容器数据卷时,容器创建成功,但是永远无法启动Redis容器
  • 二·问题原因:
    • 1.docker容器里面,如果进程都是守护进程,则容器会自动关闭,并且没有报错
    • 2.Redis容器使用的redis.conf配置文件中`daemonize`是`yes`,表示Redis服务进程成为守护进程
    • 3.使用的docker run命令中带有-d参数,表示直接后台启动Redis服务
    • 4.宿主机跟Redis容器数据卷挂载映射的目录,都需要拥有可读可写操作权限
    • 5. 综上所述:因此Redis容器里面启动时,容器中全是守护进程,所以容器会瞬间关闭,永远启动不起来
  • 三·解决方案:
    • 前提:先对宿主机的挂载映射目录,进行授权操作,两个方案都需要使用
    • 解决方案一(推荐使用):该方案下Redis容器实例重启时,Redis服务也会自动启动。使用-d参数后台启动Redis服务,需要修改redis.conf配置文件
    • 解决方案二(了解拓展):该方案下Redis容器实例重启时,Redis服务不会自动启动,还是需要进去手动启动Redis服务。使用前端交互式命令,进行手动启动Redis服务

一·问题描述:

1.docker若是直接简单使用run命令,但不挂载容器数据卷等参数,则可以启动Redis容器

在这里插入图片描述

2.docker复杂使用run命令,使用指定redis.conf文件后台启动Redis服务、且挂载容器数据卷时,容器创建成功,但是永远无法启动Redis容器

在这里插入图片描述

二·问题原因:

1.docker容器里面,如果进程都是守护进程,则容器会自动关闭,并且没有报错

2.Redis容器使用的redis.conf配置文件中daemonizeyes,表示Redis服务进程成为守护进程

3.使用的docker run命令中带有-d参数,表示直接后台启动Redis服务

4.宿主机跟Redis容器数据卷挂载映射的目录,都需要拥有可读可写操作权限

5. 综上所述:因此Redis容器里面启动时,容器中全是守护进程,所以容器会瞬间关闭,永远启动不起来

三·解决方案:

前提:先对宿主机的挂载映射目录,进行授权操作,两个方案都需要使用

chmod 777 /宿主机目录

解决方案一(推荐使用):该方案下Redis容器实例重启时,Redis服务也会自动启动。使用-d参数后台启动Redis服务,需要修改redis.conf配置文件

  • 1.修改redis.conf配置文件参数daemonizeno

由于创建容器实例时,会进行容器数据卷挂载,因此可以直接在外部宿主机里面修改,docker会自动同步该文件到redis容器对应目录里面

#表示创建Redis服务的进程,是否为守护进程
daemonize no

在这里插入图片描述

  • 2.删除之前创建的redis容器实例
docker rm -f 容器id

在这里插入图片描述

  • 3.复杂使用run命令,再次重新创建redis容器实例。会进行容器数据卷挂载,指定redis.conf配置文件启动,使用-d参数后台启动redis服务(创建其他容器实例,命令格式也差不多这样)

注意:里面路径参数值,读者应该根据自己的实际情况进行修改

docker run -p 6379:6379  --name myRedis6.0.8  --privileged=true  -v /Applications/redis-6.0.8/config/redis.conf:/etc/redis/redis.conf  -v /Applications/redis-6.0.8/data:/data  -d redis:6.0.8  redis-server /etc/redis/redis.conf
  • 4.执行并校验Redis服务结果:成功可用!
    在这里插入图片描述
  • 5.退出容器时,注意使用ctrl+p+q方式,这样不会关闭容器
    在这里插入图片描述

解决方案二(了解拓展):该方案下Redis容器实例重启时,Redis服务不会自动启动,还是需要进去手动启动Redis服务。使用前端交互式命令,进行手动启动Redis服务

  • 1.无需修改配置文件参数daemonize值,yes或者no都行,这个参数表示创建Redis服务的进程,是否为守护进程;仅仅会导致使用命令redis-server /etc/redis/redis.conf启动服务时,形式不一样罢了;
    (1)如果为yes则启动时可以直接后台启动,不用一直保留终端窗口开着;
    (2)如果为no当前这种解决方案也可以使用,但是就不推荐了,因为这会需要终端窗口一直保持开着才行,否则就会关闭Redis服务
    在这里插入图片描述
  • 2.删除之前创建的Redis容器实例:
docker rm -f 容器id
  • 3.复杂使用run命令创建redis容器实例,且进行容器数据卷挂载,且使用交互式进入容器里面,该方式并不会启动Redis服务进程,需要到容器里面进行手动启动Redis服务(创建其他容器实例,命令格式也差不多这样)

注意:里面路径参数值,读者应该根据自己的实际情况进行修改

docker run -p 6379:6379  --name myRedis6.0.8  --privileged=true  -v /Applications/redis-6.0.8/config/redis.conf:/etc/redis/redis.conf  -v /Applications/redis-6.0.8/data:/data  -it redis:6.0.8  /bin/bash

在这里插入图片描述

  • 4.在容器里面手动启动Redis服务,并且验证Redis服务是否可用:成功可用!
#使用指定配置文件启动Redis服务
redis-server /etc/redis/redis.conf

在这里插入图片描述

  • 5.退出容器验证结果:成功可用
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/473882.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SIFT 3D关键点检测以及SAC-IA粗配准

一、SIFT 3D关键点检测 C #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/io.h> #include <pcl/visualization/pcl_visualizer.h> #include <boost/thread/thread.hpp> #include &…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十二)(3)

实验十二&#xff1a;微分方程模型 练习三 1.分别用数值解命令ode23t和ode45 计算示例3中微分方程的数值解,同用命令ode23 算得的数值解以及解析解比较,哪种方法精度较高?你用什么方法比较它们之间的精度? clc;clear; f(x,y)2*yx2; figure(1) [x,y]ode23t(f,[1,2],1); plo…

对称密钥密码体制、公钥密码体制

1 对称密钥密码体制 加密密钥与解密密钥都使用相同密钥的密码体制。 数据加密标准 DES DES 属于对称密钥密码体制&#xff0c;是一种分组密码。 在加密前&#xff0c;先对整个明文进行分组。每一个组长为 64 位。 然后对每一个 64 位 二进制数据进行加密处理&#xff0c;…

C++重新认知:智能指针

0/# 一、为什么要有智能指针 内存泄露是我们开发大型项目时最为头疼的问题&#xff0c;当我们将对象建立在堆上时&#xff0c;因为需要我们自己手动释放&#xff0c;因此避免不了忘记删除&#xff0c;或者删除时没有考虑清楚情况的问题&#xff0c;从而造成悬挂指针或者是野指针…

Sora技术报告——Video generation models as world simulators

文章目录 1. 视频生成模型&#xff0c;可以视为一个世界模拟器2. 技术内容2.1 将可视数据转换成patches2.2 视频压缩网络2.3 Spacetime Latent Patches2.4 Scaling transformers 用于视频生成2.5 可变的持续时间&#xff0c;分辨率&#xff0c;宽高比2.6 抽样的灵活性2.7 改进框…

【Linux】Framebuffer 应用

# 前置知识 LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。 Frame 是帧的意思&#xff0c; buffer 是缓冲的意思&#xff0c;这意味着 Framebuffer 就是一块内存&#xff0c;里面保存着一帧图像。 Framebuffer 中保存着一帧图像的每一个像素颜色值&…

4核8G服务器支持多少人同时在线访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

Unity类银河恶魔城学习记录7-7 P73 Setting sword type源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill_Controller.cs using System.Collections; using System.Col…

基于SringBoot+Vue的大学生社团管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 1.1 研究背景 1.…

C语言之日历问题

一、代码展示 #include<stdio.h> int leapyear(int year)//判断是不是闰年函数 {if (year % 4 0 && year % 100 ! 0 || year % 400 0)return 1;elsereturn 0; } int days(int year, int month, int* day)//判断一个月有几天 {if (month ! 2)return day[month…

如何在JavaScript中使用大于和小于运算符

在你的 JavaScript 程序中&#xff0c;你经常需要比较两个值&#xff0c;以确定一个是否大于另一个或小于另一个。这就是大于和小于运算符派上用场的地方。 在本文中&#xff0c;我们将通过代码示例更详细地介绍如何使用这些运算符。 &#xff08;本文内容参考&#xff1a;ja…

Acwing---875. 快速幂

快速幂 1.题目2.基本思想3.代码实现 1.题目 给定 n n n 组 a i ai ai, b i bi bi, p i pi pi&#xff0c;对于每组数据&#xff0c;求出 abii m o d mod mod pi 的值。 输入格式 第一行包含整数 n n n。 接下来 n n n 行&#xff0c;每行包含三个整数 a i ai ai, b i …