安装 MySQL 服务
拉取镜像
docker pull mysql[:tag]
docker pull mysql:5.7
生成MySQL容器
方式一、
这是最基本设置。-e 指定环境变量,这里是用来设置初始化root用户的密码
docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
存在的问题:
①、我们需要修改 mysql配置是很困难的。即使使用 docker exec -it 容器id /bin/bash 的方式进入到容器内部。进去了之后我们找到配置文件,此时发现 vi 命令它也没有默认安装!!
②、容器中的数据没有挂载到宿主机中,万一误删除容器会导致数据丢失。
方式二、
通过挂载的方式,将外部的配置文件挂载到容器内部。
docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v mysqlconf:/etc/mysql/conf.d mysql:5.7
通过这种方式,我们可以很容易地修改 mysql 配置文件。例如修改字符集
docker ps # 查询 Mysql 容器id
docker volume ls # 查询所有数据卷
docker volume inspect 数据卷名 # 查看数据卷所在宿主机挂载路径
docker volume inspect mysqlconf
cd 挂载路径
vim mysql.cnf # 编辑 mysql 配置文件
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
docker restart mysql容器id # 重启容器
使用 navicat 工具连接
show variables like 'char%'; # 验证字符编码修改是否生效
方式三、(推荐)
除了挂载配置文件外,还需要将日志文件 和 mysql数据文件挂载出来
docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
-v mysqlconf:/etc/mysql/conf.d \
-v mysqllog:/var/log/mysql \
-v mysqldata:/var/lib/mysql \
mysql:5.7
数据库备份
备份全库
docker exec mysql名称|容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
docker exec mysql:5.7 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
备份指定库表
docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --导出指定库数据
备份表结构
即只是备份表结构,不备份数据
docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --导出指定库数据不要数据
执行SQL脚本
docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql
安装 Redis 服务
拉取镜像
docker pull redis[:tag]
docker pull redis:5.0.10
运行 Redis 容器
方式一、
这是最基本运行 redis 方式。
docker run --name redis -p 6379:6379 -d redis:5.0.10
存在的问题:
①、无需使用密码即可在任意主机上连接 redis
②、没有指定 redis配置文件
方式二(推荐)
加载外部配置文件,将数据持久化到外部容器
mkdir -p /root/redis/data # 用于存放外部持久化数据的数据卷目录
docker run --name redis -p 6379:6379 \
-v /root/redis/data:/data \ # 将容器中 /data目录出来
-v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf \ # 挂载配置文件
-d redis:5.0.10 redis-server /usr/local/etc/redis/redis.conf # 启动 redis 使用指定配置文件
需要我们提前准备好 redis.conf。 redis.conf需要修改部分: ①、bind 0.0.0.0 # 允许任意主机访问 ②、appenonly yes # 开启 aof 持久化功能 ③、requirepass 密码 # 设置连接 redis 的密码
安装 Nginx
拉取镜像
docker pull nginx
创建 Nginx 容器
docker run -di --name nginx -p 80:80 nginx
将容器内的配置文件拷贝到指定目录(请先提前创建好目录)
# 创建目录
mkdir -p /home/ruoyi/nginx
# 将容器内的配置文件拷贝到指定目录
docker cp nginx:/etc/nginx /home/ruoyi/nginx/conf
终止并删除容器
docker stop nginx
docker rm nginx
创建 Nginx 容器
创建Nginx容器,并将容器中的/etc/nginx目录和宿主机的/home/ruoyi/nginx/conf目录进行挂载
docker run -di --name nginx -p 80:80 -v /home/ruoyi/nginx/conf:/etc/nginx nginx
安装 Tomcat
拉取镜像
docker pull tomcat:8.5-jdk8
运行 Tomcat 容器
做端口映射 以及将 webapps 目录挂载出来
docker run -p 8080:8080 -v webapps:/usr/local/tomcat/webapps -d --name tomcat tomcat:8.5-jdk8
注意了,此时我们访问 tomcat 会出现如下:
原因是在镜像中 webapps 目录下没有文件。
docker exec -it 60 /bin/bash # 进入到tomcat容器内部,然后查看 webapps目录下没有东西
解决的方法:
cp -r webapps.dist/* webapps/