Docker的安装与快速部署MySQL与Redis集群

0.简介

       Docker 是一种开源的容器化平台,可以将其理解为一个高度轻量化的虚拟机,但原理截然不同。容器共享主机操作系统的内核,避免了传统虚拟机模拟完整操作系统的巨大开销,从而实现了极致的轻量化、秒级的启动速度以及接近原生的性能表现。

         运作依赖于三个核心概念:镜像、容器和仓库。镜像是一个只读的模板,类似于安装系统所用的ISO文件,它包含了运行某个软件所需的一切代码、运行时、库和环境变量。容器则是镜像的一个运行实例,它是一个隔离的、安全的进程空间,可以被创建、启动、停止和删除。而仓库则是集中存储和分发镜像的地方,如同GitHub之于代码可以获取海量的官方或社区维护的镜像。

          使用 Docker 解决了环境一致性的难题,确保了应用从开发、测试到生产环境都能以完全相同的方式运行,杜绝了“在我电脑上还好好的”这类问题。

一.安装Docker环境

(1)更新一下软件包

sudo apt-get update
sudo apt-get upgrade

(2)安装Docker依赖

sudo apt-get install ca-certificates curl gnupg lsb-release

(3)添加Docker密钥

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

(4)添加阿里云Docker源

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

(5)安装Docker

apt-get install docker-ce docker-ce-cli containerd.io

(6)验证安装

sudo docker version

如果打印版本信息则安装成功:

二.通过Docker安装MySQL

(1)拉取MySQL镜像

docker pull mysql:5.7

(2)配置示例

docker run -itd  --name mysql-test -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
[-p 3306:3306 :映射容器服务的 3310 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码]

举例,这种配置方式特别适合开发测试环境,通过端口映射可以方便地从宿主机访问容器内的MySQL服务,而数据卷挂载则能确保数据持久化,即使容器被删除数据也不会丢失。:

docker run  -d -p 3310:3306 -v D:\docker-mysql:/etc/mysql/conf.d -v D:\docker-mysql\data:/var/lib/mysql -e M YSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

(3)数据卷容器,实现多个mysql同步

数据卷容器是一种特殊的容器,它不运行任何应用,只是用来管理数据卷。其他容器可以通过--volumes-from参数共享这些数据卷,实现多个容器间的数据共享和同步。

修改上面举例的部分,在其基础上去掉-v加上-volumes-from mysql01创建成功后mysql02同样挂载到mysql01所挂载的位置实现数据持久化

(4)使用DockerFile

#使用Dockerfile构建MySQL并创建数据库:
FROM mysql:5.7                                           #基于mysql5.7
ENV MYSQL_ROOT_PASSWORD=123456 #设置密码
ENV LANG=C.UTF-8                                   #设置字符
COPY yourdb.sql /dokerpath/                    #复制.sql文件
VOLUME /var/lib/mysql                             # 挂载目录

三.Docker部署Redis集群

上边是主机,后边是从机。主机崩溃从机代替

(1)创建redis网络

docker network create redis --subnet 172.38.0.0/16

(2)使用Shell创建多个Redis

	for port in $(seq 1 6); \
	do \
	mkdir -p /mydata/redis/node-${port}/conf
	touch /mydata/redis/node-${port}/conf/redis.conf
	cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
	port 6379
	bind 0.0.0.0
	cluster-enabled yes
	cluster-config-file nodes.conf
	cluster-node-timeout 5000
	cluster-announce-ip 172.38.0.1${port}
	cluster-announce-port 6379
	cluster-announce-bus-port 16379
	appendonly yes
	EOF
done

(3)使用Docker创建容器

	docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v /mydata/redis/node-1/data:/data  -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

在上面的命令中,不同节点需要将上边的-1,换成实际的-n,ip也继续向后

如第二个为:

	docker run -p 6371:6379 -p 16371:16379 --name redis-2 -v /mydata/redis/node-2/data:/data  -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

(4)运行容器redis-1

docker exec -it redis-1 /bin/sh

(5)创建集群

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

随后可以进行验证:

claster info

claster nodes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

RIDDLE!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值