環境mysql
docker 版本: 18.09.2 windows 版本:win10,用HyperV 命令行工具:git-bash git version 2.21.0.windows.1
1.在當前宿主機的目錄目錄下建立三個文件,用來與 docker 中的 mysql 鏡像進行掛載git
$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
2.初始化mysql密碼並進行容器掛載,指定的容器名字若與已有的容器有衝突,可先從新命名或將有衝突的容器刪除sql
$ 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的解決方法,可參考docker
https://segmentfault.com/a/1190000017302478shell
參數說明:segmentfault
· -p:容器的 3306 端口映射到主機的 3306 端口。windows
· $PWD:當前的目錄路徑bash
· -v $PWD/conf:/etc/mysql/conf.d:映射配置文件工具
· -v $PWD/logs:/logs: 映射日誌文件spa
· -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>