系统:centos7
以下命令都是在root用户下使用,非root用户可能会出现权限不足问题。
一、安装docker
1. 下载阿里的源,需要先有wget(yum install -y wget)wget -V 查看版本
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或
wget -P /etc/yum.repos.d http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
另:yum如果被占用 rm -f /var/run/yum.pid
2. 更新yum缓存
yum clean all
yum makecache fast
3. yum安装docker-ce
查看版本:yum list docker-ce --showduplicates | sort -r
安装:yum install -y docker-ce-19.03.9-3.el7
4. 添加docker镜像加速
(1)获取阿里云的加速地址(需登录阿里云)阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
或者使用docker官方地址(听说失效了) https://registry.docker-cn.com
(2)修改文件 /etc/docker/daemon.json
( 如果文件不存在,可以直接创建它 ;示例的docker版本 /etc/docker 目录 和 daemon.json文件都需要新建)
填充如下内容:
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
5. 启动docker
启动:systemctl start docker
开机自启:systemctl enable docker
另:相应端口需在防火墙开放
或者直接关闭防火墙:systemctl stop firewalld
二、docker安装redis
1. 查看redis镜像版本 Docker Hub
另:以下使用3.0.0版本
2. docker下载镜像 docker pull redis:3.0.0
3. docker通过镜像运行一个容器(实例)
docker run -itd --name redis0.1 -p 8001:6379 redis:3.0.0
(1)进入容器的命令:docker exec -it 容器id /bin/bash
如:docker exec -it 775c7c9ee1e1 /bin/bash
(2)进入容器后,执行find / -name *redis.conf*,发现没有配置文件redis.conf,下一步指定配置文件。
4. 运行一个新的实例,并指定配置文件
docker run -itd --name redis-0 -v /a_software/redis/redis0/conf/redis.conf:/etc/redis.conf -v /a_software/redis/redis0/data:/data -p 7000:6379 redis:3.0.0 redis-server /etc/redis.conf --appendonly yes
参数解释:
(1)-itd : 是 -d -i -t 三个参数的整合,-d是后台运行,-i可以交互操作,-t启动终端。
(2)--name : 指定容器的名称
(3)-v : 将容器外的文件或文件夹挂载到容器内,顺序是 -v 容器外:容器内。或者说把容器外的文件建了个快捷方式给容器用。可以指定多个挂载,例子中挂载了一个redis.conf文件和一个data文件夹。
(4)-p : 映射端口,顺序是 -p 容器外:容器内。
(5)redis-server /etc/redis.conf --appendonly yes : 这个是redis服务的启动命令,/etc/redis.conf 表示配置文件位置, --appendonly yes 表示持久化数据(保存数据到硬盘)。
配置文件:
常用的四个属性:
#设置密码
requirepass 123456
bind 0.0.0.0 #设置外部ip访问,0.0.0.0表示全部外部ip
# protected-mode no #关闭保护模式,配合上面的bind属性使用,3.2版本以后新增的属性
#设置监听端口
port 6379
redis.conf 原版文件(3.0.0版本):https://wws.lanzous.com/ii1oafsnu2d
建议用哪些写哪些,如果把配置全部写上去,反倒会冲突,导致容器启动失败。
不知道是哪条冲突,有说是daemonize参数与docker run的-d冲突(两个都是设置后台启动),但我daemonize no也还是不行,还有参数冲突。
其他配置参数:
可以参考这位博主:redis常用配置参数详解 - Jony.K.Chen - 博客园
三、docker安装redis集群
0. docker关闭和删除所有容器的命令
(1)关闭所有容器:docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
(2)删除所有关闭状态的容器:docker rm `docker ps -a|grep Exited|awk '{print $1}'`
(3)删除所有未运行容器(已运行的只报错不会被删掉):docker rm $(sudo docker ps -a -q)
1. 前期配置
(1)redis.conf文件
需要添加 cluster-enabled yes 属性,一般也要开放外部ip访问。
(2)端口映射
除了监听端口,还需要映射(监听端口+10000),如:6379 和 16379,这个是redis内部通信用的端口号。
我尝试过映射这两个端口,ruby脚本没报错误,但是客户端连接不上。姑且先使用端口全映射,docker run 参数加上 --network=host,去掉-p映射,意思是把容器暴露的端口全部映射到对应宿主机端口。
(3)下载对应脚本和安装ruby环境
gem脚本:All versions of redis | RubyGems.org | your community gem host
ruby脚本:先下载redis源码:Index of /releases/ ,解压后搜索 redis-trib.rb 文件,redis.conf 文件源码里也有。
ruby环境安装:yum install ruby
gem脚本安装:进入gem脚本所在目录,执行 gem install ./redis-3.0.0.gem --local (本地安装) gem install redis -v 3.0.0 (在线安装)
2. 创建好对应redis.conf文件,并启动redis容器
docker run -itd --name redis1 --network=host -v /a_software/redis/redis1/conf/redis.conf:/etc/redis.conf redis:3.0.0 redis-server /etc/redis.conf
3. 运行ruby脚本
进入脚本所在目录,执行:
ruby ./redis-trib.rb create --replicas 1 192.168.15.134:7001 192.168.15.134:7002 192.168.15.134:7003 192.168.15.133:7004 192.168.15.133:7005 192.168.15.133:7006
--replicas 1 表示为每个主节点配置一个从节点,命令上写了6个节点,因此是3主3从。脚本内置的算法,会尽量把主节点分散到不同主机。
报了超多警告,请谨慎使用,至少可以连接上了。
用到的文件:https://wws.lanzous.com/iJlKYfsrjmb ,注:我用的是redis3.0.0版本,默认开启了外网访问,文件里就没配置bind 0.0.0.0和protected-mode no 了,其他版本还是要加上。
4. 测试连接
推荐Another-Redis-Desktop-Manager,中文界面,挺好的。
下载链接:https://wws.lanzous.com/iUkcOfsrx2f
四、安装minikube
1. 检查是否开启cpu虚拟化
(1)输入 dmesg |grep kvm 或 lsmod |grep kvm ,有输出文字就是已开启。
(2)vm虚拟机设置:编辑虚拟机设置->处理器->虚拟化......
2. 下载minikube的 安装及配置 合一的可执行文件。
(1)curl -LO minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.4.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
(2)minikube start --vm-driver=none
--vm-driver=none 指不使用虚拟机
3. 下载 kubectl
curl -LO http://kubernetes.oss-cn-hangzhou.aliyuncs.com/kubernetes-release/release/v1.13.4/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl
4. 开启webUI
(1)minikube dashboard
(2)开放远程访问端口
nohup kubectl proxy --port=46304 --address='192.168.15.133' --accept-hosts='^192.168.15.133$' >/dev/null 2>&1&