ubuntu docker运行mysql并且挂载数据卷到宿主机

1. 外部挂载路径

在用户目录创建挂载目录
mkdir mysql
进入挂载目录
cd mysql

1.1 拉取mysql:5.7镜像

docker pull mysql:5.7

2. 创建mysql:5.7容器

宿主机mysql配置文件路径:$PWD/mysql
宿主机mysql数据卷路径:$PWD/data

  1. 创建一个临时的msyql:5.7容器,目的是cp 容器里mysql的配置文件
docker run -d -p 3306:3306 --name myMysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
  1. 复制容器中的mysql配置文件到宿主机指定目录
    从容器中将文件拷贝出来的命令:dokcer cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp myMysql:/etc/mysql $PWD/mysql
  1. 停止并删除刚才创建的临时容器
docker stop myMysql
docker rm myMysql
  1. 进入mysql目录修改配置
cd mysql
vim my.cnf

将配置修改为这是我的配置,其他根据需求来改

[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 配置大小写不敏感
lower_case_table_names=1
# 配置最大sql语句最大长度
max_allowed_packet = 6M
  1. 创建并启动mysql:5.7容器
docker run -d --name mysql -p 3306:3306 --restart always --privileged=true -v $PWD/mysql:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="123456" mysql:5.7
  1. 大功告成,查看容器日志
docker logs mysql

2.1 涉及到的命令行参数

--restart always                                -> 开机启动
--privileged=true                               -> 提升容器内权限
-v $PWD/mysql:/etc/mysql       -> 映射配置文件
-v $PWD/data:/var/lib/mysql    -> 映射数据目录
-e MYSQL_USER="summit"                          -> 添加用户summit
-e MYSQL_PASSWORD="summit"                      -> 设置summit用户的密码为summit
-e MYSQL_ROOT_PASSWORD="root"                   -> 设置root的密码为root

你可能感兴趣的:(docker)