Mysql
1.拉取mysql镜像容器
关于mysql5.x和mysql8.x,8.x速度更快,特性更多,版本最新。但是大多项目都是很长时间的,用的5.x版本。可能会有一些新项目用mysql8.x版本
docker pull mysql:5.6 #拉取镜像#此时并不能直接启动,需要开放端口,指定root用户密码
2.运行mysql
docker run -p 3306:3306 --name ms1 -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql:5.6#映射3306端口,设置名称为ms1,设置环境值为root(用户密码为root),后台启动,并且总是重启,mysql5.6。
—restart=always:当docker重启时,该服务也会自动重启。
启动成功

进入容器,mysql可以使用

3.宿主机数据卷管理运行mysql
如果说需要更新数据库,或者有傻逼把docker容器停止了。我们没挂载数据卷的情况下,数据是默认保存在容器中,所以就消失了。我们使用容器卷技术,来“保存备份”数据。不过备份的只是底层数据库文件,不利于数据的迁移与备份
docker run -p 3306:3306 --name ms1 -e MYSQL_ROOT_PASSWORD=root -d --restart=always -v /root/data:/var/lib/mysql mysql:5.6#-v 以/root/data文件夹,接收保存容器中/var/lib/mysql的数据。
4.docker中数据的迁移
将mysql导出sql文件来备份数据,利用mysql官方命令mysqldump。
- 将所有的数据保存下来。
docker exec ms1 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/test-all.sql #会将所有的数据保存下来。
- 将某个库保存下来
docker exec ms1 sh -c 'exec mysqldump --databases 库名 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql #将某个库保存下来
- 只保存指定库中的结构
docker exec ms1 sh -c 'exec mysqldump --no-data --databases 库名 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/test.sql
当然使用其他工具方法也是一样的比如 navicat。
redis
1.拉取镜像
docker pull redis:5.0.12
2.运行redis
docker run --name redis01 -d -p 6379:6379 -v /root/redisdata:/data --restart=always redis:5.0.12 redis-server --appendonly yes
docker run --name redis01 -d -p 6379:6379 -v /root/redisdata:/data --restart=always redis:5.0.12 redis-server /data/redis.conf
redis支持内存数据持久化
1.rdb持久化:快照redis服务器将某一时刻数据以快照文件形式写入到磁盘
2.aof持久化:redis服务器将所有redis客户端的写操作以命令方式记录到日志文件中。AOF更加安全
Nginx
1.拉取nginx镜像
docker pull nginx:1.19.10
2.运行nginx
负载均衡
先从网上或者在容器中获取一份nginx.conf配置文件
docker run -d nginx:1.19.10 #先启动一个容器docker cp 容器id:/etc/nginx/nginx.conf . #复制文件到当前文件夹中。#修改一些文件docker run -p 8084:81 -d --restart=always --name nginx01 -v /root/nginx.conf:/etc/nginx/nginx.conf nginx:1.19.10
服务器
映射索引网站到nginx home目录
docker run -p 8081:80 -d --restart=always --name n1 -v /root/html:/usr/share/nginx/html nginx:1.19.10
