🧡docker案例redis
🥚1、redis 通过docker直接拉取
# 查看镜像
$ docker images
# 查看镜像创建的容器(只看运行的)
$ docker ps
# 直接拉取 版本为6.2.6
$ docker search redis # (搜索)
$ docker pull redis
# 创建一个容器 并进入
$ docker run -it redis /bin/bash
root@0a7d004e2065:/data#
$ docker run -itd --name redis6 -p 6379:6379 redis # 设置容器名称(--name)以及映射端口号(-p)
# 创建容器 -v 挂载点
$ docker run -itd -p 6379:6379 -v ~/data:/data redis
301a8f610b98664db4790ba7222497f5e1f5771b3b0f7696eb2a925cddf8286f
# 查看创建的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
301a8f610b98 redis "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp exciting_dubinsky
# 进入容器并且添加数据
$ docker exec -it 30 /bin/bash # 30为容器id前两位
root@301a8f610b98:/data#
$ redis-cli # 执行客户端
127.0.0.1:6379>
$ set age 19 # 添加数据
# 配置服务
# 下载配置文件 这个是redis 7.0.xx配置文件与6.2.6不匹配
$ wget http://download.redis.io/redis-stable/redis.conf
# 下载6.2.6的 复制里面的redis.conf
$ wget https://download.redis.io/releases/redis-6.2.6.tar.gz
# 创建一个6379.conf 修改一些配置
$ vim 6379.conf
include redis.conf
bind 0.0.0.0
protected-mode no
daemonize no
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dbfilename 6379.rdb
requirepass 123456
# 配置完以后创建容器
$ docker run -itd -p 6379:6379 --name redis -v ~/redis.conf:/data/redis.conf -v ~/6379.conf:/data/6379.conf -v ~/redis/data:/data redis redis-server 6379.conf
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a74572ac1382 redis "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
# 连接本机redis
$ docker run -it --rm redis redis-cli -h 192.168.118.129 -p 6379 -u 123456
🥚2、redis dockerfile
# 创建目录redis7 准备文件
$ mkdir redis7
$ cd redis7
$ mkdir data
$ vim dockerfile
# 下载redis 7.0.0版本 通过终端直接上传
# 解压
$ tar zxvf redis-7.0.0.tar.gz
$ ls
dockerfile redis-7.0.0 redis-7.0.0.tar.gz
# 进入 redis-7.0.0 执行编译
$ cd redis-7.0.0
$ make && make install
# 复制文件到data目录下 并删除多于的文件
$ cp /redis-7.0.0/src/* data/ -r
$ cd data # 后面命令都是在data目录下的执行的
$ rm *.h *.d *.o *.c
$ rm Makefile valgrind.sup Makefile.dep
$ rm -rf modules/
$ ls
commands redis-benchmark redis-check-rdb redis-sentinel redis-trib.rb
mkreleasehdr.sh redis-check-aof redis-cli redis-server
# 复制redis.conf 6379.conf
$ cp ~/redis7/redis-7.0.0/redis.conf .
$ cp ~/6379.conf .
$ ls
6379.conf mkreleasehdr.sh redis-check-aof redis-cli redis-sentinel redis-trib.rb
commands redis-benchmark redis-check-rdb redis.conf redis-server
# 回到redis7 目录 编写dockerfile
from ubuntu
copy data /data
Env PATH $PATH:.:/data
workdir /data
expose 6379
cmd ["redis-server","redis.conf"]
# 在redis7 创建镜像
$ docker build -t redis:7.0.0 .
Sending build context to Docker daemon 217.5MB
Step 1/6 : from ubuntu
---> ba6acccedd29
Step 2/6 : copy data /data
---> bbb7b3f1298b
Step 3/6 : Env PATH $PATH:.:/data
---> Running in 9665d3239369
Removing intermediate container 9665d3239369
---> 14a180faa3e3
Step 4/6 : workdir /data
---> Running in 788666dcb1d4
Removing intermediate container 788666dcb1d4
---> fd2a3c852ce0
Step 5/6 : expose 6379
---> Running in 788c24851c4f
Removing intermediate container 788c24851c4f
---> 83f046202a8e
Step 6/6 : cmd ["redis-server","redis.conf"]
---> Running in b69fa02ae47b
Removing intermediate container b69fa02ae47b
---> 40c090a83eba
Successfully built 40c090a83eba
Successfully tagged redis:7.0.0
# 创建容器 发现容器没有在运行
$ docker run -itd -P redis:7.0.0
$ docker ps
查看日志,发现是编译新的在旧的服务器上运行不起来,需要安装一个模块,因为不好安装 所以选择下载新的服务器ubuntu22.04
最新的redis7需要使用ubuntu22.04
$ docker logs 4 # 4为容器id第一位
$ docker pull ubuntu:22.04 # 下载新版ubuntu
下载新版的ubuntu,dockerfile文件也要修改一下
/home/lyear/redis7/dockerfile
from ubuntu:22.04
Run apt update
Run apt upgrade -y
Run apt install gcc make -y
copy data /data
Env PATH $PATH:.:/data
workdir /data
Expose 6379
Cmd ["redis-server","redis.conf"]
复制redis.conf和编写6379.conf
$ cp ~/redis-7.0.0/redis.conf ~/redis7/data
$ vim ~/redis7/data/6379.conf
6379.conf的内容:
include redis.conf
bind 0.0.0.0
protected-mode no
daemonize no
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dbfilename 6379.rdb
requirepass 123456
构建镜像
$ docker build -t redis:7.0.0 .
创建容器
$ docker run -itd -p 6379:6379 redis:7
客户端登录
$ docker run -it --rm redis:7 redis-cli -h 192.168.118.129 -p 6379