吐槽
搞大半天才搞定持久化的問題,如果隨着docker重啓,數據庫內的數據就沒了,那等於白搭。
作爲docker和mysql小白,真的很難找到資料搭建起來
拉鏡像
docker pull mysql
啓動一個乾淨的mysql容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d --rm mysql
進入容器
按照下面命令執行
docker exec -it mysql bash
cd /etc/mysql/conf.d
echo "[mysqld]" > my-config.cnf
echo "innodb_use_native_aio=0" >> my-config.cnf
/etc/mysql/conf.d路徑下,所有的.cnf都會加載,名稱隨便起就行了。
在Windows下,無法通過掛載/etc/mysql/conf.d在外部去添加my-config.cnf。
所以只能重新封裝鏡像。方式有直接在裏面加cnf文件,這種方式針對Windows是很合理的;或者start腳本中做點手腳,用cp命令,掛載不受限制的路徑,然後cp到/etc/mysql/conf.d中去,這種就比較費勁了。
在Linux下,則可以掛載/etc/mysql/conf.d,然後通過chmod修改權限,並不需要重新生成鏡像。
封裝成自己的鏡像
docker commit mysql mymysql:1.0
編寫 docker-compose.yml 文件
volumes是掛載
version: '2'
networks:
basic:
services: mysql:
container_name: mymysql
image: mymysql:1.0
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
- ./MySQL:/var/lib/mysql
networks:
- basic
編寫啓動腳本start.sh
docker-compose -f docker-compose.yml up -d mysql
開開心心啓動吧
sh start.sh
查看docker ip地址
一般是 192.168.99.100
docker-machine ip