想了解Docker-部署MySQL,Redis的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker部署mysql的好处的相关问题,此外,我们还将为您介绍关于Docker入门4——Do
想了解Docker - 部署MySQL, Redis的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker部署mysql的好处的相关问题,此外,我们还将为您介绍关于Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES、docker 启动 mysql redis、docker 安装 mysql/redis、docker 快速部署mysql主从的新知识。
本文目录一览:- Docker - 部署MySQL, Redis(docker部署mysql的好处)
- Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES
- docker 启动 mysql redis
- docker 安装 mysql/redis
- docker 快速部署mysql主从
Docker - 部署MySQL, Redis(docker部署mysql的好处)
部署MySQL
拉取MySQL镜像
docker pull mysql:5.7
创建MySQL容器
docker run -di --name=mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
# 这里做了映射
- -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
- -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
远程登录mysql,连接宿主机的IP ,指定端口为3306
部署Redis
拉取镜像
docker pull redis
支持远程连接
- 在宿主机创建conf和data文件夹
- 在conf中创建redis.conf文件,内部写入
bind 0.0.0.0 #绑定地址
daemonize NO
protected-mode no #运行远程连接
requirepass 123456 #密码是123456
创建容器
docker run -p 6379:6379 --name redis_6379 -v /home/test/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/test/redis/data:/data -d redis:alpine3.11 redis-server /etc/redis/redis.conf --appendonly yes
Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES

转:
Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES
Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES
啥也不说了,面向实战学习
Docker 部署 MySQL
拉取镜像
[root@feng ~]# docker pull centos/mysql-57-centos7
创建容器
docker run -di --name=feng_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
-p 代表端口映射,格式为宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
这里创建了 mysql 容器,名字是 feng_mysql,同时把本机的 33306 端口映射为容器的 3306 端口
远程连接
这里用 SqlServer,mysql 可视化你想用啥就用啥,(服务器安全组开一下),
测试连接成功!
随意操作
Docker 部署 Tomcat
拉取镜像
[root@feng ~]# docker pull tomcat
创建容器
docker run -di --name=feng_tomcat -p 9080:8080 -v/usr/local/webapps:/usr/local/tomcat/webapps tomcat
-p 表示端口映射
-v 目录映射
开启服务器 9080 端口,我们进入测试
发现确实有 tomcat,只是这个 docker 版的可能由于精简,没有配置首页,但证明可以使用!
Docker 配置 Nginx
拉取镜像
[root@feng ~]# docker pull nginx
创建容器
[root@feng ~]# docker run -di --name=feng_nginx -p 3567:80 nginx
这里映射到 3567 端口,开安全组直连
懒得开安全组也可以 curl 测试连接
Docker 配置 Redis
拉取镜像
[root@feng ~]# docker pull redis
创建容器
[root@feng ~]# docker run -itd --name feng_redis1 -p 16379:6379 redis
6cb0d7058a741389fbb42439efeebb08bf3b6178ab43bd9c280fd1640f4e7829
[root@feng ~]#
使用 redis
咱使用 Redis-desktop-manager 可视化远程连接
成功进入!
Docker 配置 ES+Kibana
咱这便宜的学生服务器招架不住 es 啊,你要想尝试也可以整,但建议不搞
拉取镜像
docker pull elasticsearch
创建容器
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
我尝试以后直接卡死哈
答应我 咱不玩
真男人说不玩?不可能
创建容器!加内存
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
就这?
curl 一样访问
转:
Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES
--Posted from Rpc
docker 启动 mysql redis
#!/bin/bash
mkdir -p /opt/mysqldata/conf /opt/mysqldata/data /opt/mysqldata/logs
cd /opt/mysqldata
docker run -p 3306:3306 --name mysql --restart=always -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
mkdir -p /opt/redisdata/data
cd /opt/redisdata
docker run -p 6379:6379 --name redis --restart=always -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
指定密码
docker run -p 6379:6379 --name redis -v $PWD/data:/data -d redis:4.0.10 redis-server --appendonly yes --requirepass 123456
指定配置文件加个-v映射一下即可。
docker run --name myNginx -d -p 80:80 -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /opt/nginx/conf.d:/etc/nginx/conf.d:ro -v /root/ssl:/root/ssl:ro nginx
docker 安装 mysql/redis
1. 安装 mysql 容器
#宿主机安装mysql
yum install mysql
#搜索mysql镜像
docker search mysql
#拉取mysql镜像
docker pull docker.io/mysql
#创建mysql容器,MYSQL_ROOT_PASSWORD=root设置root的密码为root
docker run --name=cgy_mysql -it -p 3306:3306 -v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/db:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d -v /opt/data/mysql/files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql
#出错报错,可能是宿主机/opt/data/mysql目录的权限问题
docker stop cgy_mysql
docker rm cgy_mysql
#查看/opt/data/mysql/db的用户和组,假设为systemd-bus-proxy:root
ls -a /opt/data/mysql/db
chown -R systemd-bus-proxy:root /opt/data/mysql
#重新创建mysql容器
docker run --name=cgy_mysql -it -p 3306:3306 -v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/db:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d -v /opt/data/mysql/files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql
#进入容器,修改root用户允许远程访问,进入容器命令:
docker exec -it 7681b85e73a1 /bin/sh
#登录容器中的mysql
mysql
#修改远程权限
alter user ''root''@''%'' identified with mysql_native_password by ''root'';
或者
alter user ''root''@''localhost'' identified with mysql_native_password by ''root'';
#修改root的host
update mysql.user set host = ''%'' where user = ''root'';
#允许远程连接
GRANT ALL PRIVILEGES ON *.* TO ''root''@''%''WITH GRANT OPTION;
FLUSH PRIVILEGES;
2. 安装 redis 容器
#拉取redis镜像
docker pull redis:latest
#创建redis容器
docker run -itd --name cgy_redis -p 6379:6379 redis:latest
#进入redis容器
docker exec -it cgy_redis /bin/bash
docker 快速部署mysql主从
docker.io/mysql里有入口脚本 docker-entrypoint.sh,需要密码(环境变量)
由以上编写脚本:
#!/bin/bash
#Get musql image
set -e
mysql_image=`docker images | grep ''docker.io/mysql'' | awk {''print $1''}`
if [ -n "$mysql_image" ]
then
echo ''The docker.io/mysql is already existed.''
else
echo ''Pull the image.''
docker pull docker.io/mysql
fi
#Create network for zookeeper containers
net=`docker network ls | grep yapi_net | awk {''print $2''}`
if [ -n "$net" ]
then
echo ''The kfknetwork is already existed.''
else
echo ''Create kfknetwork.''
docker network create --subnet 172.30.0.0/16 yapi_net
fi
#Start 3 zookeeper cluster
echo ''Start mysql master and slave''
rm -rf /opt/mysql_master/data
rm -rf /opt/mysql_slave_1/data
rm -rf /opt/mysql_slave_2/data
mkdir -p /opt/mysql_master/data
mkdir -p /opt/mysql_slave_1/data
mkdir -p /opt/mysql_slave_2/data
master_ip=''172.30.0.51''
slave_1_ip=''172.30.0.52''
slave_2_ip=''172.30.0.53''
docker run --restart always -d --name sql_master --network yapi_net --ip ${master_ip} -v /opt/mysql_master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=''123qqq...A'' -p 3307:3306 docker.io/mysql
docker run --restart always -d --name sql_slave_1 --network yapi_net --ip ${slave_1_ip} -v /opt/mysql_slave_1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=''123qqq...A'' -p 3308:3306 docker.io/mysql
docker run --restart always -d --name sql_slave_2 --network yapi_net --ip ${slave_2_ip} -v /opt/mysql_slave_2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=''123qqq...A'' -p 3309:3306 docker.io/mysql
#add server_id and log_bin into my.cnf
echo ''sleep 30''
sleep 30
docker exec -it sql_master sed -ir "/\[mysqld\]/a log_bin=mas\nserver_id=`echo ${master_ip} |awk -F. ''{print $4}''`" /etc/mysql/my.cnf
docker exec -it sql_slave_1 sed -ir "/\[mysqld\]/a log_bin=mas\nserver_id=`echo ${slave_1_ip} |awk -F. ''{print $4}''`" /etc/mysql/my.cnf
docker exec -it sql_slave_2 sed -ir "/\[mysqld\]/a log_bin=mas\nserver_id=`echo ${slave_2_ip} |awk -F. ''{print $4}''`" /etc/mysql/my.cnf
docker restart sql_master
docker restart sql_slave_1
docker restart sql_slave_2
1、执行代码
2、启动docker后,不能远程登录,报错:
ERROR 2059 (HY000): Authentication plugin ''caching_sha2_password'' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
意思是客户端不支持caching_sha2_password的加密方式
修改一下加密方式即可:
alter user ''root''@''%'' identified with mysql_native_password by ''123qqq...A'' (知识补充:SET PASSWORD FOR ''root''@''localhost'' = PASSWORD(''newpassword'');
)
mysql的内置函数
3、登录mysql,在master上授权从用户:
create user ''repl''@''%'' identified by ''repl''; #grant replication slave on *.* to ''replicater''@''172.17.0.%'' identified by ''123qqq...A'';会有语法错误,应该是版本太高 grant replication slave on *.* to ''repl''@''%'';
reset master; #在master上执行show master status; #查看偏移量和log日制文件名
4、先手动同步数据:
mysqldump -u root -p -A > /var/lib/mysql/mytest.sql #在master上执行,导出时,必须进入容器纸箱
mysql -u root -p < /var/lib/mysql/mytest.sql #都必须进入容器执行
5、登录mysql,在slave上
mysql> change master to master_host=''172.30.0.51'',master_port=3306,master_user=''repl'',master_password=''repl'',master_log_file=''fang.000001'',master_log_pos=155;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
start slave;
show slave status\G;#查看io和sql线程是否ok
我们今天的关于Docker - 部署MySQL, Redis和docker部署mysql的好处的分享已经告一段落,感谢您的关注,如果您想了解更多关于Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES、docker 启动 mysql redis、docker 安装 mysql/redis、docker 快速部署mysql主从的相关信息,请在本站查询。
本文标签: