环境
docker 版本: 18.09.2 windows 版本:win10,用HyperV 命令行工具:git-bash git version 2.21.0.windows.1
1.在当前宿主机的目录目录下创建三个文件,用来与 docker 中的 mysql 镜像进行挂载
$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
2.初始化mysql密码并进行容器挂载,指定的容器名字若与已有的容器有冲突,可先重新命名或将有冲突的容器删除
$ docker run -p 3306:3306 --name mymysql -v "/$PWD/conf":/etc/mysql/conf.d -v "/$PWD/logs":/logs -v "/$PWD/data":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d
注意window10环境进行挂载,对宿主机的路径要进行转换,加上 "" 是必须的,以下一篇文章提供了不能挂载文件夹进container的解决方法,可参考
https://segmentfault.com/a/1190000017302478
参数说明:
· -p:容器的 3306 端口映射到主机的 3306 端口。
· $PWD:当前的目录路径
· -v $PWD/conf:/etc/mysql/conf.d:映射配置文件
· -v $PWD/logs:/logs: 映射日志文件
· -v $PWD/data:/var/lib/mysql:映射数据目录
· -e MYSQL_PASSWORD="123456":初始化 root 用户的密码
· -d: 后台运行容器,并返回容器ID
3.使用 cp 命令,将宿主机test_db目录复制到 容器 mymysql /opt 目录下,注意宿主机的目录要加双引号,不然会被认为是另一个容器
$ docker cp "C:\Users\CZY\mysql\data\test_db" mymysql:/opt
4.第二步执行后已后台运行容器,使用 exec 命令进入容器并开启一个shell会话(也可以使用attach),注意整个命令前面要加上 winpty(win10中才加)
$ winpty docker exec -it mymysql bash
root@398e651dd483:/#
参数说明:
· -i :以交互模式运行容器,通常与 -t 同时使用
· -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用
· bash :在容器内执行打开一个shell会话,执行bash命令
5. cd 到含有导入文件的目录中,在进行数据导入。若不先切换补录,则 < 后边的数据要使用绝对路径表示,且test_db中的 dump 文件也要使用路径表示,不然会提示找不到文件。
另外一种方法是切换到目录后,进入mysql,然后使用 source 命令导入,但我没能操作成功,有能操作成功的请告诉我。
root@398e651dd483:/# cd /opt/test_db
root@398e651dd483:/opt/test_db# mysql -uroot -p < employees.sql
6.在 shell 中进入 mysql 查看数据是否已正常导入,使用前面已经初始化的密码
$ winpty docker exec -it mymysql bash root@398e651dd483:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.26 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Window10环境下在Docker中导入mysql数据 - Python技术站