快速使用Docker部署MySQL、Redis、Nginx

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速使用Docker部署MySQL、Redis、Nginx

快速上传下载工具(lrzsz)


# 安装lrzsz
yum install -y lrzsz


上传方式:拖拽上传到当前目录。rz -y选择上传。


下载指定文件:sz 文件路径,接着就让我们进行选择存放目录,牛逼!!!



Docker环境安装


安装yum-utils:


yum install -y yum-utils device-mapper-persistent-data lvm2


为yum源添加docker仓库位置:


yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


安装docker:


yum install -y docker-ce


启动docker:


systemctl start docker


配置镜像加速:


# 创建目录
sudo mkdir -p /etc/docker   
# 编写配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://aytmcj86.mirror.aliyuncs.com"]
}
EOF
# 将服务重启一下
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl restart docker


一、快速部署MySQL


mysql-docker文档


# 官方
docker run --name mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run -it --network some-network --rm mysql mysql -hmymysql -uroot -proot


正式快速部署:


1、下载MySQL5.7的docker镜像:


docker pull mysql:5.7


2、使用如下命令启动MySQL服务:


docker run -p 3306:3306 --name mysql \
-v /etc/localtime:/etc/localtime \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7


参数说明


-p 3306:3306:将容器的3306端口映射到主机的3306端口

-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机

-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

-v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机

-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码


3、将准备好的sql复制到容器中


# 复制宿主机的manage.sql到mysql容器下的/路径中
docker cp /mydata/manage.sql mysql:/


4、进入运行MySQL的docker容器:


# 在容器中创建一个新的命令行
docker exec -it mysql /bin/bash   # docker exec -it mysql mysql -uroot -p   # 使用mysql容器中的命令行


5、在容器中对mysql进行操作


# 使用MySQL命令打开客户端:
mysql -uroot -proot --default-character-set=utf8
# 此时进入mysql的命令行中,使用数据库并进行导入
use manage;
source /manage.sql;
# 接着创建一个账户,该账号所有ip都能够访问
grant all privileges on *.* to 'changlu' @'%' identified by '123456';


注意注意:


在mysql7中有一个groupby的问题:


我们可以自定义一个my.cnf放置到/mysql/conf目录中,docker的mysql镜像源没有带配置文件,我们进行绑定之后启动mysql也就有了


[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


# 修改添加好了之后,重启我们的docker容器
docker restart mysql


二、快速部署redis


redis镜像中默认时没有redis.conf的


参考文章:史上最详细Docker安装Redis (含每一步的图解)实战


下载Redis5.0的docker镜像:


docker pull redis:5


由于redis镜像中默认不会带redis.conf,所以若是我们想要使用配置文件来进行启动的话就需要自己去官方找redis.conf,再经过修改后放入到指定的目录,之后来容器启动时挂载即可:各个版本下载地址-redis官方


docker安装启动redis 说说那些年遇到的坑

需要修改的的点有:


1、一定要注意自己的redis版本
2、设置密码:requirepass 123456
3、#bind 127.0.0.1 要注释掉,允许对外连接
4、appendonly yes:开启持久化
5、# daemonize yes 一定要要注释,注释,注释!!!


之后使用如下命令启动Redis服务:


# –restart=always 总是开机启动
# –log是日志方面的
# –appendonly yes 开启redis 持久化
# –requirepass xxx 设置密码 
docker run --log-opt max-size=100m --log-opt max-file=2  \
  -p 6379:6379 --name redis  \
  -v /etc/localtime:/etc/localtime \
  -v /mydata/redis/redis.conf:/etc/redis/redis.conf  \
  -v /mydata/redis/data:/data  \
  -d redis:5 redis-server /etc/redis/redis.conf   \
  --appendonly yes   \
  --requirepass 123456


进入Redis容器使用redis-cli命令进行连接:


docker exec -it redis redis-cli


三、快速部署Nginx


下载Nginx1.10的docker镜像:


docker pull nginx:1.10


先运行一次容器(为了拷贝配置文件):若是不这样拷贝直接指定对应目录的话,在宿主机的conf目录下就都是为空的了


docker run --restart=always -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10


将容器内的配置文件拷贝到指定目录:


docker container cp nginx:/etc/nginx /mydata/nginx/


进入到宿主机的/mydata/nginx目录,修改该目录下nginx文件名称:


mv nginx conf


终止并删除容器:


docker stop nginx
docker rm nginx


启动nginx:


# /usr/share/nginx/html是nginx默认访问的路径、/var/log/nginx是对应的log日志、/etc/nginx也就是对应nginx配置文件
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10


问题

1、关于Docker启动后端口绕过防火墙问题

问题背景:我启动了多个Docker容器后,开了防火墙也能够直接访问端口。


# 查看路由表
iptables --list



问题暂时不能解决,主要云服务器还有一层防火墙,就暂时把整个问题放一放。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
42 24
|
11天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
72 26
|
19天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
38 5
|
28天前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
148 1
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
569 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
2月前
|
弹性计算 关系型数据库 MySQL
Docker安装MySQL
这篇文章详细介绍了如何使用Docker安装MySQL数据库服务,包括拉取镜像、配置数据卷以及启动容器的步骤。
400 0
Docker安装MySQL
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
4月前
|
关系型数据库 MySQL Linux
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
这篇文章提供了在Linux系统中使用Docker安装Mysql 5.7版本的详细过程和图解,包括安装指定版本、创建实例、启动、使用Navicat连接测试、文件挂载与端口映射、进入容器、配置文件修改以及重新启动容器等步骤。
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
下一篇
DataWorks