【发布时间】:2017-04-16 23:41:40
【问题描述】:
我只是在学习 docker 的基础知识,但一直坚持从本地系统导入 SQl 文件。我在 Windows 10 上,并允许我的 docker 容器访问我的共享驱动器。我有一个位于 D 上的 SQL 文件,我想导入从 docker hub 获得的 Maria DB 的基本映像。
我找到了一个在我的镜像上安装该 sql 文件的命令,并尝试从容器 sql 命令提示符内直接导入镜像,但得到一个无法打开文件的错误。
以下是我尝试过的两种方法,但是我在哪里存储我的 sql 转储以及如何导入它?
方法一尝试通过mysql命令行
winpty docker run -it --link *some-mariadb*:mysql --rm mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
然后
use *database-created* // previously created
然后
source d:/sql_dump_file.sql
方法二
docker exec -i my-new-database mysql -uroot -pnew-db-password --force < d:/sql_dump_file.sql
2016 年 5 月 12 日更新
所以在玩了一个令人失望的周末之后。我目前将驱动器更改为 C: 驱动器,因为似乎有一些未知问题我无法通过让 D: 驱动器工作来调试。
然后我找到了检查命令来查看哪些卷已安装到容器。我有以下内容,但我无法导入到 SQL,因为它说文件不存在,但它在 docker 中清楚地表明它存在并已安装,SQL 文件位于 map_me 文件夹中。我在 C 的主目录中创建了一个名为 map_me 的文件夹:
docker inspect dbcontainer
"Mounts":
[
{
"Source": "/map_me",
"Destination": "/docker-entrypoint-initdb.d/sl_dump_file.sql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
【问题讨论】: