安装MySQL
MySQL官方docker地址
https://hub.docker.com/_/mysql
拉取镜像
docker pull mysql:5.7.31
备份镜像
docker save mysql:5.7.31 -o mysql.5.7.31.tar
导入镜像
docker load -i mysql.5.7.31.tar
运行镜像
新参数学习
MySQL与nginx这类容器有所不同,需要额外增加一些参数,具体:
自定义环境变了
docker run -e , --env=[]:设置环境变量,容器中可以使用该环境变量,向my.cnf文件中追加相关配置项。
特权模式
--privileged
可以不受限制地访问任何自己的系统调用。在正常的操作中,即使容器内有 root,Docker 也会限制容器的 Linux Capabilities 的,这种限制包括像 CAP_AUDIT_WRITE 这样的东西,它允许覆盖内核的审计日志–你的容器化工作负载很可能不需要这个 Capabilities。所以特权只应该在你真正需要它的特定设置中使用,简而言之,它给容器提供了几乎所有主机(作为root)可以做的事情的权限。
本质上,它就是一个免费的通行证,可以逃避容器所包含的文件系统、进程、sockets 套接字等,当然它有特定的使用场景,比如在很多 CI/CD 系统中需要的 Docker IN Docker 模式(在 Docker 容器内部需要 Docker 守护进程),以及需要极端网络的地方。
避免以 root 运行
虽然在容器内以 root 身份运行是很正常的,但如果你想加固容器的安全性,还是应该避免这样做。
运行参数
# 还可以设置编码
docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
容器内测试
# 进入容器:根据官网上的实例,使用bash命令进入容器
docker exec -it mysql bash
# 登录mysql
mysql -uroot -p
# 输入密码 roor
use mysql;
show databases;
# 退出mysql
exit
# 退出容器
exit