搭环境太麻烦?试试一键跑个redis

前言

经过前面一节的内容,我们已经做好了前置准备工作,这里我们来认识一些docker 中常用的命令,最后我们写一个脚本实现一键起一个redis服务,妈妈再也不用担心我搭环境的问题了。

温馨提示:
	这里的操作搭建基于开发环境使用,很多地方考虑的不够全面,不能应用于生产实践,切记。

docker 命令介绍

这里着重看一些 docker 镜像和容器相关的命令,其他的命令暂不做介绍。

  1. 查找仓库中的镜像。
# 这里义nginx镜像为例
docker search nginx
  1. 下载镜像,查到我们需要的镜像以后,我们可以通过 docker pull [options] name [:tag@digest] 命令来下载该镜像。
#这里不加tage,默认下载 :latest(最新的)
docker pull nginx
  1. 查看本地镜像。
docker images
  1. 删除本地镜像。
# 通过指定镜像名称删除
docker rmi nginx
# 也可以通过指定镜像id删除,镜像id通过上面的 `docker image` 命令查看,镜像id是一个比较长的字符串,我们删除的以后只需要输入前面几位,docker可以找到就可以删除该镜像了,如:
docker rmi 3e4s
  1. 导出镜像。
docker save nginx > docker-nginx.tar

该命令执行完成以后,在当前目录下就可以看到一个 docker-nginx.tar 的文件。
6. 有导出也就有导入,使用 docker load命令可以导入镜像。

docker load < docker-nginx.tar
  1. 启动容器,使用 docker run 命令来启动容器。
docker run nginx -p 80:80

执行完以上命令,不出意外的话,通过 访问 虚拟机地址,你可以看到如下一个页面
在这里插入图片描述
这证明我们的 nginx 服务已经正常起来了。
好了,关于 docker 的常用命令就介绍到这里了,接下来我们实现通过一个脚本一键启动一个 redis 服务。

#!/bin/bash

# 服务启动成功,打印参数信息
function printSuccessLog(){
   echo "redis 服务启动完成"	
   cat <<EOF
容器id: $1
服务名: $2
端口号: $3
数据存储目录: $4
密码: $5
EOF
}

cat <<EOF
   ###################################################################
   本脚本用于基于 docker 一键启动 redis 服务(前提是机器上已经安装好并
   启动了docker服务),部分参数可配置,如果不想配置,可以一路回车,脚本
   执行完成可以快速启动一个 redis 服务。
   温馨提示:
   	本脚本仅仅适用于搭建开发环境,服务稳定以及数据安全性暂不考虑,
   不可直接应用于生产环境,切记!
   ###################################################################
EOF

echo
echo
echo

NOW=`date +"%Y-%m-%d %H:%M:%S"`
echo "准备构建 redis 服务 $NOW"

echo "请输入服务名,该服务名用于以后快速启动停止或修改该服务,默认为 docker-redis"
read INPUT_IMAGE_NAME
if [ ! $INPUT_IMAGE_NAME ]
   then 
   	IMAGE_NAME=docker-redis
else
   IMAGE_NAME=$INPUT_IMAGE_NAME
fi

echo "请输入端口号,该端口号用于客户端连接该服务,默认为 6379"
read INPUT_PORT
if [ ! $INPUT_PORT ]
   then 
   	PORT=6379
else
   PORT=$INPUT_PORT
fi

echo "请输入 redis 的数据存储目录,该目录用于挂载服务的存储数据目录,防止容器重启以后数据丢失,默认为 /usr/local/data/redis"
read INPUT_DATA_LOCATION
if [ ! $INPUT_DATA_LOCATION ]
   then
   	DATA_LOCATION=/usr/local/data/redis
else
   DATA_LOCATION=$INPUT_DATA_LOCATION
fi

# 如果目录不存在,则新建该目录
if [ ! -d $DATA_LOCATION ]
   then
   	mkdir -p $DATA_LOCATION
fi

echo "请输入 redis 的密码,默认为 123456"
read INPUT_PASSWORD
if [ ! $INPUT_PASSWORD ]
   then 
   	PASSWORD=123456
else
   PASSWORD=$INPUT_PASSWORD
fi

NOW=`date +"%Y-%m-%d %H:%M:%S"`
echo "开始构建 redis 服务 $NOW"

docker pull redis

echo "停止旧的 $IMAGE_NAME 服务..."

docker stop $IMAGE_NAME

echo "删除旧的 $IMAGE_NAME 容器..."

docker rm $IMAGE_NAME

echo "开始启动新的 $IMAGE_NAME 服务..."

CONTAINER_ID=`docker run -itd --name $IMAGE_NAME -p $PORT:6379 -v $DATA_LOCATION:/data redis --appendonly yes --requirepass $PASSWORD`
CONTAINER_ID_PATTERN="^[0-9a-zA-Z]{64}$"
if [[ $CONTAINER_ID =~ $CONTAINER_ID_PATTERN ]]
   then
   	echo "是否把 redis 服务设为开启自启?[Y/N] ,默认 Y"
   	read AUTO_START
   	if [[ $AUTO_START -eq "Y" ]]
   		then
   			docker update --restart=always $CONTAINER_ID
   	fi
   	printSuccessLog $CONTAINER_ID $IMAGE_NAME $PORT $DATA_LOCATION $PASSWORD
fi

如无意外的话,redis 服务已经起来了,可以简单测试

docker exec -it 7848 redis-cli
127.0.0.1:6379> get 1
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set 123 abc
OK
127.0.0.1:6379> get 123
"abc"
127.0.0.1:6379> exit

当然,redis 的配置文件也可以使用外部的文件,使用外部的配置文件挂载到 /etc/redis/redis.conf 即可。
使用脚本重新构建 reids 服务,发现刚才的数据还在,至此,一键搭建 redis 服务完成,可以使用 redis 桌面客户端工具连接 redis 愉快的玩耍了。
开发中,有了缓存数据库,关系型数据库几乎也是必不可少的,下节分享使用脚本一键跑个 mysql 服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值