一、安装docker
yum install -y docker #安装
service docker start #启动
service docker stop #关闭
二、常用命令
docker run -it docker.io/php bash #启动容器并且命令行进入
docker run -it -v --privileged /root/php:/root/php docker.io/php bash #启动容器,文件映射,文件加权限 并且命令行进入
docker run -it --name php --privileged -v /root/php:/root/php -p 9000:80 docker.io/php bash #给名字起名字并且端口映射
docker ps -a #查看容器运行状态
docker tag 原来的镜像的名字 要改为的镜像的名字
docker start -i 容器名字 #重启容器
docker volume inspect 容器名字 #查看容器数据卷
三、 设置加速器
mkdir -p /etc/docker
vim /etc/docker/daemon.json
里面插入
{
"registry-mirrors": ["https://reg-mirror.qiniu.com"]
}
四、分布式集群PXC
常用的命令
docker node ls # 查看集群节点
docker node rm -f 节点id #删除节点 -f 强制删除
docker swarm leave -f #解散集群
docker network ls #查看集群网络环境
docker network create -d overlay --attachable 网络名称 #创建共享网络
docker nerwork rm 网络名称 #删除虚拟网络
1、 创建Swarm()集群(虚拟主机1)
docker swarm init #如报错可指定IP --advertise-addr ip
2、管理主机开放端口(虚拟主机1)
firewall-cmd --permanent --zone=public --add-port=2377/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=4789/tcp
firewall-cmd --permanent --zone=public --add-port=4789/udp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --reload
3、虚拟机2加入集群。切换到虚拟主机2,复制虚拟主机类似的这样的一句话,每个集群都不用,是在主机1,创建集群以后生成的一句话,然后在虚拟机2执行
docker swarm join \
--token SWMTKN-1-6d3ssjevrb1vzdde6obgw0dz510ksy4lp0gq7ci3kplak6r701-0jkbeujh0uaz4qh8cehuo749r \
192.168.56.103:2377 #返回成功的结果是this node joined a swarm as a worker
3、创建分布式容器
docker network create -d overlay --attachable 网络名称 #创建共享网络
docker run -it --net=上一步创建的共享网络名称 ... #创建分布式容器
4、下载安装pxc
docker pull percona/percona-xtradb-cluster #拉去pxc镜像
docker tag percona/percona-xtradb-cluster pxc #复制并重新命名
docker rmi percona/percona-xtradb-cluster #删除
5、创建主节点(创建以后,稍等以后,才能连接)
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=root -e XTPABACKUP_PASSWORD=root -v pnv1:/var/lib/mysql --privileged --name=pn1 --net=swarm_mysql -e CLUSTER_NAME=pxc1 pxc
# XTPABACKUP_PASSWORD 节点之间同步密码;pnv1 数据存放在宿主机的位置;--net 上面创建的共享网络名称
出现了一串加密的字符串就代表成功了,稍等几秒,就可以使用navigate等工具连接数据库了,注意是9001端口
6、创建从节点
必须先创建主节点,才能创建重节点,否则会闪退
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=root -e XTPABACKUP_PASSWORD=root -v pnv1:/var/lib/mysql --privileged --name=pn2 -e CLUSTER_JOIN=pn1 --net=swarm_mysql -e CLUSTER_NAME=pxc1 pxc
和主节点的区别,增加了CLUSTER_JOIN=主节点的名字;--name= 节点名字
五、搭建Replication集群
1、下载和安装镜像(非官方)
docker pull mishamx/mysql
docker tag mishamx/mysql rep
docker rmi mishamx/mysql
2、创建主节点容器
docker run -d -p 9003:3306 --name rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_REPLICATION_USER=root -e MYSQL_REPLICATION_PASSWORD=root -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep
出现了一串加密的字符串就代表成功了,稍等几秒,就可以使用navigate等工具连接数据库了,注意是9003端口
3、创建从节点
docker run -d -p 9003:3306 --name rn2 -e MYSQL_MASTER_HOST=rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_REPLICATION_USER=root -e MYSQL_REPLICATION_PASSWORD=root -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep
与主节点不同,--name 修改;增加了MYSQL_MASTER_HOST=主节点的名字
4、搭建Replication集群2(为了使用mycat支持分片,如果不实用mycat,只做读写分离,此步骤可省去)
六、使用MyCat分库分表
1、什么是切分
为了降低数据库的负载和缩表
2、垂直切分(降低数据库负载)和水平切分(缩表)
3、安装OpenJDK1.8
docker pull adoptopenjdk/openjdk8
docker tag adoptopenjdk/openjdk8 openjdk8
docker rmi adoptopenjdk/openjdk8
4、创建Java容器,在数据卷放入Mycat
docker run -d -it --name mycat1 -v mycat1:/root/server --privileged --net=host openjdk8
5、开发端口
firewall-cmd --permanent --zone=public --add-port=8066/tcp
firewall-cmd --permanent --zone=public --add-port=9066/tcp
firewall-cmd --reload
6、下载Mycat,并放入数据卷
docker volume inspect 容器名字 #查看容器数据卷
cd 容器数据卷
wget Mycat的下载地址
tar -zxvf Mycat的压缩包 #解压
7、部署负载均衡Mycat
按照【第六】部署虚拟机1Mycat 部署虚拟机2的Mycat
8、Mycat的主要配置文件
server.xml schema.xml rule.xml