1.拉取mysql镜像
docker pull mysql:5.7
2.运行mysql镜像
2.1 使用mysql:5.7版本镜像启动
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d --name mysql01 -v /root/data:/var/lib/mysql --restart=always mysql:5.7 --lower-case-table-names=1
- -p:端口映射,后面紧接着的3306:3306是要进行映射的端口,冒号左边的3306是宿主机的端口号,冒号右边的3306是mysql容器的端口,-p的作用是将mysql容器的3306端口映射到宿主机的3306端口,这样就可以通过宿主机的ip+映射到宿主机的3306端口就能连接上启动的mysql容器。
- -e:后面紧接着的MYSQL_ROOT_PASSWORD=root,是指定mysql容器的root用户登陆密码。
- -d:表示以守护进程的方式启动服务,服务在后台运行。
- –name:指定启动后的容器名。
- -v:持久化数据,将容器的数据交给宿主机管理,主要也是为了同步数据,防止容器被删除后数据找不到的问题。/root/data 这是宿主机的数据存放路径;/var/lib/mysql 这是mysql容器存放数据的地方。
- –restart=always :启动后服务总是运行的。
2.2 使用mysql:8.2.0 版本镜像启动
docker run -d --restart=always -e MYSQL_ROOT_PASSWORD=mysqlroot -p 3306:3306 --name mysql \
-v /etc/localtime:/etc/localtime:ro \
-v /root/data/mysql/data:/var/lib/mysql \
-v /root/data/mysql/log:/logs \
-v /root/data/mysql/conf/my.cnf:/etc/mysql/my.cnf mysql:latest \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--default-authentication-plugin=mysql_native_password \
--lower-case-table-names=1
- -v /etc/localtime:/etc/localtime:ro:设置时区。
- -v /root/data/mysql/data:/var/lib/mysql:挂载数据目录。
- -v /root/data/mysql/log:/logs:挂载日志目录。
- -v /root/data/mysql/conf/my.cnf:/etc/mysql/my.cnf:挂载配置文件目录。
- –character-set-server=utf8mb4:设置数据库字符集。
- –collation-server=utf8mb4_general_ci :设置数据库排序规则。
- –default-authentication-plugin=mysql_native_password:设置数据库密码策略。
- –lower-case-table-names=1:设置数据库表名忽略大小写。
3.连接mysql
运行玩镜像后,会返回一个容器id,再通过docker ps命令查看启动的容器信息。
容器启动完成后就可以通过宿主机的ip+运行命令时映射的端口联连接数据库了。