Docker 之 Mysql、SqlSever、Redis、MongoDB
一些知识:Docker入门的亿点点学习
1 Mysql
参考:DockerHub Mysql
参考:Docker 安装mysql容器数据卷挂载到宿主机
# 拉取mysql镜像
docker pull mysql:latest
# 启动容器
docker run -itd --name mysql -p 3306:3306 \
--restart=always \
-v /root/software/mysql/config:/etc/mysql \
-v /root/software/mysql/data:/var/lib/mysql \
-v /root/software/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
# 3306暴露端口
# 挂载数据config data mysql-files
# MYSQL_ROOT_PASSWORD 密码
# restart=always 自动启动
# 进入mysql
docker exec -it 容器id/容器名称 /bin/bash
# 登录
mysql -u root -p
# 查看数据库版本信息
status
select version();
# 退出mysql
exit;
2 SqlSever
参考:Docker 运行 SQL Server 容器映像
参考:DockerHub Microsoft SQL Server
参考:CentOS中使用Docker安装SqlServer以及遇到的那些坑
# 拉取镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest
# 启动
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=123@Password" \
-p 1433:1433 --name sqlsever -h sqlsever \
-v /root/software/sqlsever/data:/var/opt/mssql/data
-v /root/software/sqlsever/log:/var/opt/mssql/log
-v /root/software/sqlsever/secrets:/var/opt/mssql/secrets
-d mcr.microsoft.com/mssql/server:2019-latest
3 Redis
客户端:AnotherRedisDesktopManager
参考:DockerHub Rdis
配置文件:redis.conf
docker pull redis
docker run \
--name redis \
--restart=always \
--privileged=true \
-v /root/software/redis/redis.conf:/etc/redis/redis.conf \
-v /root/software/redis/data:/data \
-d -p 6379:6379 \
redis \
/etc/redis/redis.conf
# 容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限 --privileged=true
# 映射配置文件 -v /root/software/redis.conf:/etc/redis/redis.conf
# 注意提前下载 redis.conf 配置文件
# 映射数据目录 -v /root/software/data:/data
# 以配置文件方式启动(为容器内配置文件==映射的宿主机配置文件)/etc/redis/redis.conf
注意事项 更改配置文件 非常重要
bind 127.0.0.1,前面加 # [才可以远程访问]
requirepass "密码" # 配置密码
持久化配置
# RDB
save 900 1 #900秒内有至少1个键被更改则进行快照;
save 300 10 #300秒内有至少10个键被更改则进行快照;
save 60 10000 #60秒内有至少10000个键被更改则进行快照。
# AOF
appendonly yes #开启AOF持久化功能;
appendfilename appendonly.aof #AOF持久化保存文件名;
appendfsync always #每次执行写入都会执行同步,最安全也最慢;
#appendfsync everysec #每秒执行一次同步操作;
#appendfsync no #不主动进行同步操作,而是完全交由操作系统来做,每30秒一次,最快也最不安全;
auto-aof-rewrite-percentage 100 #当AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据;
auto-aof-rewrite-min-size 64mb #允许重写的最小AOF文件大小配置写入AOF文件后,要求系统刷新硬盘缓存的机制
# 混合持久化 可以通过bgrewriteaof手动重写aof。
aof-use-rdb-preamble yes #配置混合持久化
4 MongoDB
参考:DockerHub MongoDB
参考:Docker 安装 MongoDB
docker pull mongo
docker run --name mongo -p 27017:27017 \
-v /root/software/mongo/data:/data \
-d mongo \
--auth
docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')