GVKun编程网logo

Docker - 部署MySQL, Redis(docker部署mysql的好处)

21

想了解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 - 部署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

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

转:

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入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

测试连接成功!

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

随意操作

Docker 部署 Tomcat

拉取镜像

[root@feng ~]# docker pull tomcat

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

创建容器

docker run -di --name=feng_tomcat -p 9080:8080 -v/usr/local/webapps:/usr/local/tomcat/webapps tomcat

-p 表示端口映射
-v 目录映射

开启服务器 9080 端口,我们进入测试

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

发现确实有 tomcat,只是这个 docker 版的可能由于精简,没有配置首页,但证明可以使用!

Docker 配置 Nginx

拉取镜像

[root@feng ~]# docker pull nginx

创建容器

[root@feng ~]# docker run -di --name=feng_nginx -p 3567:80 nginx

这里映射到 3567 端口,开安全组直连

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

懒得开安全组也可以 curl 测试连接

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

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入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

成功进入!

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入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

答应我 咱不玩
Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

真男人说不玩?不可能

创建容器!加内存

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

就这?

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

curl 一样访问

Docker入门4——Docker部署MySQL、Tomcat、Nginx、Redis、ES

转:

Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES


--Posted from Rpc

docker 启动 mysql redis

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

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 快速部署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, Redisdocker部署mysql的好处的分享已经告一段落,感谢您的关注,如果您想了解更多关于Docker 入门 4——Docker 部署 MySQL、Tomcat、Nginx、Redis、ES、docker 启动 mysql redis、docker 安装 mysql/redis、docker 快速部署mysql主从的相关信息,请在本站查询。

本文标签: