docker里的ubuntu16下搭建redis

在 Ubuntu 16.04 上用 Docker 和 Docker Compose 搭建 CI 测试环境 持续集成(CI)是现代软件交付的核心实践,其本质在于通过自动化构建、测试与反馈,保障代码质量与发布稳定性。Docker 作为轻量级容器化技术,提供进程隔离与环境一致性;Docker Compose 则实现多服务协同编排,显著降低 CI 环境搭建与维护成本。在老旧基础设施(如已 EOL 的 Ubuntu 16.04)上落地 CI,关键不在于升级系统,而在于利用容器‘隔离宿主机依赖’的特性,将 MySQL、Node.js、Redis 等测试栈封装为可复现、可版本化、不污染系统的运行单元。该方案特别适用于金融、E 阅读详情

总结根据下面的博客搭建docker+redis时遇到的坑。
http://blog.youkuaiyun.com/lifetragedy/article/details/50628820

先声明一下,不是上面的博客写的不好,而是博主本人第一次搭建,之前也从没用过docker,所以有些地方可能对于老手来说不值一提,但作为新手还是要注意一下的,不,是特别需要注意。其实博主本来可以用vm里的openSESU(linux发行版之一)来直接安装redis的,但看这个docker蛮好玩的,就试用一下,结果折腾了两天才搞好。好了,废话不多说了,开始填坑了。只是坑太多了,都不知道怎么讲起了。。。

写在前面的话:
1.推荐使用官网里DockerToolbox,它有一个可视化的工具。
不要使用原博里的boot2docker windows了,网上搜的根本下不动。

2.记得要进入你的BIOS里打开那个虚拟化的东东,Intel是叫什么hyper-v吧,AMD是叫SVM那个,跟电脑的型号有关,可能有不同叫法,总之改成enable就行了,要不然你根本安装不了docker。

额,首先,还是讲讲docker吧,我只写自己的理解,什么docker是进程间的隔离,一般的虚拟机是在OS之上利用虚拟机管理程序虚拟出一个完整的操作系统就不说了,给两个链接:
docker与虚拟机性能比较
How is Docker different from a normal virtual machine?
docker首先要区分两个概念,一个是容器(container:就是用~>docker ps查询出来的那些),一个是镜像(images:用docker images可以查询出来)。有人说这就像是类和实例之间的区别,images是类,container是实例,也挺形象的。
但如果按照本意理解,我觉得images就是一个模板然后根据这个模板创建不同的container,因为是模板所以是”死的”,在运行的永远是”活的”container。

1)、所以每次我们在进入(进入一个运行的container用:~>docker exec -it container_id /bin/bash)container修改后

2)、然后退出时(退出用:~>exit)

3)、最好保存为一个images(先用~>docker ps查看刚才进入的容器id,再用~>docker commit container_id image_name(自己想的images名字))

这样就可以利用这个image还原出上次的环境,就不用重复上次的步骤了。

1坑一
从这引出第一个坑,那就是不用的image可不可以删除呢?原博说可以,其实没有说清楚,也可以说原博说的有问题。
答案是:有继承关系的不可以,没有继承关系的可以。
就哪原博来说吧,首先创建了一个ubuntu14镜像,然后用这个image创建一个容器,在里面进行ssh的配置,之后退出,commit为一个新的image,命名为ubuntu:ssh。那这个ubuntu14就不可以被删除,除非先删除ubuntu:ssh这个。依次类推。但我们可以删除tag,这样使用

~>docker images

时就不会显示。除非用

~>docker images -a

这会查询出所有的images,包括tag为none的。但就算这样,你依然删不掉这个imges,所以不用再搜怎么删掉tag为none的image了,不过“坏的”none倒是可以用网上的方法删掉。

坑二
安装后的(即make后)/usr/local/redis1/bin/文件夹下是没有redis.conf文件的,要到解压文件里拷一份过来,或者懂脚本的话知道./redis-server 后的那个redis.conf其实是个参数,所以你也可以直接指定在/opt/redis-stable文件夹下的那个redis.conf文件。但是要注意按他那样修改文件是不够的,还要注释掉一句 bind 127.0.0.1 ::1,后面你就知道了,不注释掉这一句你根本连不上,哦,是假的连上了,因为你ping的时候会报错,会说你的redis运行在protected mode上,之后再输flushall就会说报在驱动器上插入软盘这样的鬼问题。

坑三
折腾了最久的就是redis启动了咩有啊,启动了怎么连不上啊。
首先判断redis server是否启动,用下面这句:

ps -ef|grep redis

这里写图片描述
注意,一定要出现./redis-server *:6379这句才算启动成功,只出现下面的那句说明没有启动成功。这里顺便说一句,如果你没有注释掉bind 127.0.0.1这句,就是绑定当前主机,那6379前面的就会是127.0.0.1,这样你用win下的命令行来连的话就连不上。
这里说的是用

./redis-server redis.conf

这句来连时判断redis是否启动的方法,因为我们在redis.conf里设置了使用守护进程来开启redis,所以就会在后台运行redis,所以要这样来判断。
但如果使用

./redis-server 

这句来开启redis,那直接看有没有启动画面就行了。就是那个一层一层的东西。

终极神坑
就是用这句话始终启动不了redis-server。

./redis-server redis.conf

而且又不报错,压根就不知道怎么解决。这时,不要怀疑,一定是redis.conf文件里的内容有错。不要想着改写法或者把redis.conf放到其他地方了。
我的就是redis.conf里的这句错了

dir "/usr/local/redis1/data"

没有在redis1下创建一个data文件夹。启动脚本是不会为你mkdir文件夹的这点要注意。其实原博中有教,但可能也是修改后没有保存为新的imges的原因,所以第二天再开的时候没考虑到,压根就不可能想到嘛。。。
但也因祸德芙。知道了可以查看log文件查找错误。
redis.conf里配置的位置

logfile "/var/log/redis/redis1.log"
35:C 18 Mar 10:04:51.373 # Can't chdir to '/usr/local/redis/data': No such file or directory
39:C 18 Mar 10:21:05.934 # Can't chdir to '/usr/local/redis/data': No such file or directory
46:C 18 Mar 10:29:00.054 # Can't chdir to '/usr/local/redis/data': No such file or directory
48:C 18 Mar 10:37:52.435 # Can't chdir to '/usr/local/redis/data': No such file or directory
53:C 18 Mar 10:42:10.195 # Can't chdir to '/usr/local/redis/data': No such file or directory
56:C 18 Mar 10:42:44.306 # Can't chdir to '/usr/local/redis/data': No such file or directory
30:C 18 Mar 23:35:22.588 # Can't chdir to '/usr/local/redis/data': No such file or directory
54:C 19 Mar 00:09:24.329 # Can't chdir to '/usr/local/redis/data': No such file or directory
60:C 19 Mar 00:11:26.290 # Can't chdir to '/usr/local/redis/data': No such file or directory
61:C 19 Mar 00:11:32.107 # Can't chdir to '/usr/local/redis/data': No such file or directory
63:C 19 Mar 00:13:55.100 # Can't chdir to '/usr/local/redis/data': No such file or directory
64:C 19 Mar 00:14:06.935 # Can't chdir to '/usr/local/redis/data': No such file or directory
74:C 19 Mar 01:03:38.161 # Can't chdir to '/usr/local/redis/data': No such file or directory
75:C 19 Mar 01:04:36.938 # Can't chdir to '/usr/local/redis/data': No such file or directory
78:C 19 Mar 01:05:34.192 # Can't chdir to '/usr/local/redis/data': No such file or directory
79:C 19 Mar 01:06:48.317 # Can't chdir to '/usr/local/redis/data': No such file or directory
83:C 19 Mar 01:07:15.929 # Can't chdir to '/usr/local/redis/data': No such file or directory
84:C 19 Mar 01:07:42.098 # Can't chdir to '/usr/local/redis/data': No such file or directory
85:C 19 Mar 01:09:24.167 # Can't chdir to '/usr/local/redis/data': No such file or directory
87:C 19 Mar 01:09:42.920 # Can't chdir to '/usr/local/redis/data': No such file or directory
95:C 19 Mar 01:11:27.031 # Can't chdir to '/usr/local/redis/data': No such file or directory
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 7001
 |    `-._   `._    /     _.-'    |     PID: 100
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

100:M 19 Mar 01:18:27.712 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
100:M 19 Mar 01:18:27.713 # Server started, Redis version 3.2.8
100:M 19 Mar 01:18:27.713 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
100:M 19 Mar 01:18:27.713 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
100:M 19 Mar 01:18:27.713 * The server is now ready to accept connections on port 7001
                _._                                                  

看这满屏的 Can’t chdir to ‘/usr/local/redis/data’: No such file or directory,瞬间明白redis.conf出错的原因。出现其它问题也可以查看日志文件来找出问题的源头。

其实还有遇到挺多小问题的,就不一一列举了。

Ubuntu 16.04 上用 Docker 执行器搭建 GitLab CI 流水线 持续集成(CI)是现代软件工程的核心实践,其本质是通过自动化流程保障代码质量与交付效率。GitLab CI 作为主流开源 CI/CD 平台,依赖 Runner 执行器实现任务调度与环境隔离。在老旧但仍在服役的 Ubuntu 16.04 系统上,因内核限制、软件源陈旧及依赖冲突,传统 Shell 或 SSH 执行器极易引发环境污染与构建不可靠;而 Docker 执行器凭借容器化隔离、镜像版本可控、运行时按需加载等特性,成为唯一兼顾稳定性与现代化能力的技术方案。它使团队能在不升级操作系统前提下,安全接入自动化流 阅读详情

相关推荐

Ubuntu 16.04 下用 stunnel 为 Redis 添加 SSL/TLS 加密隧道

Redis 作为内存键值数据库,默认不提供传输层加密,其 RESP 协议以明文传输命令、数据与认证凭据,存在严重中间人窃听风险。SSL/TLS 是保障网络通信机密性与完整性的基础安全机制,通过公钥基础设施(PKI)实现身份认证与信道加密。在老旧但广泛使用的 Ubuntu 16.04 环境中,stunnel 作为轻量级 TLS 封装代理,可在不修改 Redis 源码的前提下,在 TCP 层之上构建端到端加密隧道,完美适配金融、政企等对系统稳定性与等保合规有严苛要求的场景。本文聚焦 stunnel 部署中的证书

banshen0201的博客 492

32:NoSQL--Redis

NoSQL—Redis NoSQL—Redis Redis简介 安装Redis Redis 持久化 Redis持久化说明: Redis持久化相关参数, Redis 的数据类型 1:String 2:List 3:set 集合 4:Sort set 有序列表 5:Hash Redis常用操作 string相关操作: list相关操作 sets集合相关操作 stored sets 有序...

龙跃丶 746

Ubuntu 16.04 安装 Docker Compose 实操指南

Docker Compose 是实现多容器应用编排的核心工具,其原理是通过声明式 YAML 文件定义服务依赖、网络与存储,由 CLI 解析并调用 Docker API 统一调度。在老旧但稳定的 Ubuntu 16.04 系统上,因官方源版本过旧(仅 1.8.x)、Python 环境受限及架构兼容性问题,直接 apt 或 pip 安装极易失败,导致 'restart: always' 语法不识别、'docker-compose ps no configuration file provided' 等典型报错。

weixin_30402343的博客 536

有关CentOS上安装的redis启动报错问题

今天像往常一样打开虚拟机上安装的CentOS7系统,通过Xshell软件进行远程连接CentOs进行操作,当我在Xshell中输入 redis-server /opt/myRedis/redis.conf(/opt/myRedis/redis.conf为我的redis的配置文件的路径)时,Xshell软件报错,错误内容为: 4155:C 20 Nov 19:21:54.748 # Can't chdir to './opt/myRedis': No such file or directory 其意思是找不

qq_38307826的博客 2320

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 372

Claude Code启动失败解决方案,执行文件不兼容一键修复

Claude Code命令行工具突然报错,显示"不支持的16位应用程序"。作者排查Node版本无果后,发现是Anthropic更新导致Windows兼容性问题。解决方法很简单:卸载旧版、切换npm镜像源、重装最新版即可恢复。经验教训:遇到类似问题应先搜索社区反馈,避免无谓排查,同时注意npm源使用后及时还原。整个踩坑过程虽折腾,但最终只是简单的重装问题。

1466

docker redis 哨兵机制 dir属性报错 No such file or directory

最近在整redis基于docker的哨兵机制时,引入sentinel.conf配置文件时,并且权限也是给满了的,但就是报错。

weixin_62868876的博客 359

ADXL355 STM32 HAL 库 SPI 驱动实战:从零构建高精度加速度数据采集系统

本文详细介绍了如何使用STM32 HAL库通过SPI接口驱动ADXL355高精度加速度计,构建稳定可靠的数据采集系统。从硬件连接到寄存器配置,再到数据采集与处理,提供了完整的实战代码和优化技巧,特别适合工业级振动监测等应用场景。

weixin_28738397的博客 326

完美解决方案 redis Could not connect to Redis at 127.0.0.1:6379: Connection refused

问题描述: 在Linux系统安装Redis后, 经过一番折腾后 ,启动了服务端后, 在启动客户端,出现了 redis Could not connect to Redis at 127.0.0.1:6379: Connection refused 考虑存在的问题: 1.redis.conf 可能配置出错 2.防火墙没有开放6379 解决方案: 恢复快照 重装redis 下面地址包含软件, 包含详细文档 「Redis安装包」https://www.aliyundrive.com/s/QHwShMSiafV

xujunming668的博客 3万+

五段式S型算法笔记

又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。

qq_36658033的博客 683

ZYNQ Linux下UIO中断配置避坑实录:从设备树修改到用户层测试(Vivado 2018.2)

本文详细解析了ZYNQ Linux下UIO中断配置的全流程,从设备树修改到用户层测试,特别针对Vivado 2018.2环境中的常见陷阱提供解决方案。内容涵盖中断号配置规则、用户空间中断处理程序编写以及性能优化技巧,帮助开发者高效实现硬件中断的用户空间控制。

weixin_31854867的博客 334

Redis集群搭建

文章目录Redis集群Redis集群的必要性Redis集群的搭建恢复集群给集群添加新的节点为新节点分配哈希槽均等分配哈希槽 Redis集群 Redis集群的必要性 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Red...

monster_warm的博客 227

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 601

Ubuntu16.04中Redis安装使用

①sudo apt-get install redis-server ② ps -aux|grep redis                             查看redis 的进程 ③netstat -nlt|grep 6379                         查看端口占用情况 ④sudo /etc/init.d/redis-server status     检查...

july_young的博客 348

【Unity优化篇】| Unity3D场景 常用优化策略,遮挡剔除、层消隐距离技术 和 LOD多层次细节

本篇文章来简单介绍一下 Unity中几种常用3D场景优化策略 方法 对于整个项目来说,本文中出现的方法也只是冰山一角,慢慢积累学习吧! 内容包括遮挡剔除(Occlusion Culling)、层消隐距离技术 和 LOD多层次细节

努力前行,总会成为自己心中的那道光 1万+

【人工智能之深度学习】12. BERT微调实战:医疗文本分类的领域自适应技巧与工业级实现

摘要:医疗文本分类是自然语言处理在医疗健康领域的核心应用,可辅助疾病诊断、病历结构化和医疗质量监控。然而,医疗文本的专业术语密集、实体关系复杂及数据长尾分布等特性,导致通用BERT模型性能受限。本文系统阐述医疗文本分类的领域自适应技术,从理论原理到工业级实现展开全流程讲解。首先分析医疗文本的独特属性及技术挑战;随后详解领域继续预训练、适配器微调、对抗训练等核心技术的数学原理;构建包含数据预处理、模型优化、隐私保护的完整实战架构;通过疾病分类、情感分析、事件检测三大案例验证技术有效性。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1008

ubuntu16.04离线搭建服务器环境,mysql,docker安装

ubuntu16.04离线搭建服务器环境,及常用软件安装 安装包地址:链接:https://pan.baidu.com/s/1lqZ-v_nfu9Wa7QDfpopTQA 提取码:0wvb 源码安装jdk #解压tar包 tar -zxvf jdk-8u181-linux-x64.tar.gz #修改文件,配置环境变量 sudo vi ~/.bashrc #在文件最下面添加(/home/java/...

weixin_42991412的博客 603

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

docker always_Ubuntu16.04服务器环境配置 – Docker、MySQL、Redis

Ubuntu16.04 服务器环境配置 – Docker、MySQL、Redis安装Docker1. 卸载旧版本sudo apt-get remove docker docker-engine docker.io2. 安装 https 相关的软件包sudo apt-get update # 先更新一下软件源库信息sudo apt-get install apt-transport-https ...

weixin_39622521的博客 161

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Ubuntu 16下 Redis的安装

Ubuntu 16 Redis的两种安装方式

qq_41319458的博客 549

ubuntu虚拟机配置redis的docker容器

ubuntu虚拟机上配置redis的docker容器

Goodbye_World66的博客 766

Ubuntu22.04在Docker下安装Redis

使用Ubuntu22.04在Dokcer下安装Redis的步骤

驴大毛的博客 856

Ubuntu系统Docker基础环境搭建完整教程

本文详细介绍在Ubuntu系统上从零开始搭建Docker基础环境的完整过程,涵盖Docker Engine安装、镜像管理、容器操作、网络配置、数据持久化等核心技术环节,通过企业级最佳实践帮助开发者快速掌握Docker容器化技术,构建高效的开发和部署环境。

腾讯云创作之星、华为云云享专家,深耕电商全栈高并发系统实战,分享可商用商城项目源码。 672

Ubuntu 16.04 安装 Docker Compose 兼容方案

Docker Compose 是用于定义和运行多容器应用的编排工具,其核心原理是通过声明式 YAML 文件驱动 Docker API 实现服务批量启停与依赖管理。在老旧系统如 Ubuntu 16.04 上,因软件源缺失、glibc 版本限制及 Python 环境冲突,标准 apt 或 pip 安装方式失效,技术价值在于提供轻量、无侵入、静态链接的二进制部署路径,保障工业控制、边缘网关等不可升级场景下的容器化落地。典型应用场景包括 ubuntu 16.04 mysql 部署、docker compose 部署

weixin_30825199的博客 556

docker部署redis集群_Linux_基于Docker搭建Redis集群 哨兵模式

目录1、Redis镜像安装2、Redis集群搭建3、Redis哨兵模式4、进行验证来源:segmentfault.com/a/11900000101318161、Redis镜像安装说明:基于Ubuntu16.04-64bit,开始本教程前,请确保您的Linux系统已安装Docker。1、下载Redis镜像镜像中心推荐使用网易蜂巢的镜像中心地址:https://c.163.com/hub...

weixin_39641738的博客 161

docker mysql配置 丢失_Ubuntu16.04服务器环境配置 – Docker、MySQL、Redis

Ubuntu16.04 服务器环境配置 – Docker、MySQL、Redis安装Docker1. 卸载旧版本sudo apt-get remove docker docker-engine docker.io2. 安装 https 相关的软件包sudo apt-get update # 先更新一下软件源库信息sudo apt-get install apt-transport-https ...

weixin_33837884的博客 111

Ubuntu 16.04下使用docker部署Redis主从复制

(以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作。) 1.拉取Redis镜像到本地 docker pull redis 2. 准备Redis主从配置文件 Redis安装后的默认配置文件在/etc/redis/redis.conf。 现在我们在本地host主机上自定义的某个目录(如/data/redis/conf/),先创建两个文件master.con...

YZ930035683的博客 382
上一篇: 使用docker时出现wlan网络适配器驱动程序出现问题
下一篇: make redis出现错误可能原因
github_32658299
博客等级 码龄11年 21粉丝 33原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值