官方MySQL镜像
https://hub.docker.com/_/mysql
参数查询
docker run -it --rm mysql:tag --verbose --help
备份
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --flush-logs --hex-blob --skip-lock-tables' > /some/path/on/your/host/all-databases.sql
备份导入
注意:采用本地目录映射时,即使容器删除,重新run后亦可读取原数据。但mysql库中的数据会重做,用户及授权信息会丢失
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
Docker不适用生产数据库的讨论
https://segmentfault.com/q/1010000008388241
京东定制-刘风才(附PPT)
https://dbaplus.cn/news-11-1118-1.html
同程定制-王晓波
https://juejin.im/entry/5a03c2f25188253d681706f4
使用host模式避免网络性能损耗
如果采用桥接模式,因为 iptables 的原因,网络性能损耗大,而且还有个问题,如果你修改了一些网络配置,比如优化内核,需要重启 docker 才能使网络可用,我的一个客户被一个 linux 高手坑过(优化内核后说网络性能提高了,结果 docker 服务网络断了,高手不知所措,我也不知道原因,直接重启 docker ,好了)
使用 host 模式则不存在这个问题,直接具备宿主机的网络性能,但是没有了链接功能,有得有失, Docker 的新版本好像在网络方面有很大改进,不过我还没来得及深入研究。
docker run --name mysql \ --net host \ -v /my/own/datadir:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -v /etc/localtime:/etc/localtime:ro \ -d mysql:tag
Docker: 限制容器可用的 CPU
https://www.cnblogs.com/sparkdev/p/8052522.html
通过cpuset-cpus 选项一次指定多个 CPU
$ docker run -it --rm --cpuset-cpus="1,3" u-stress:latest /bin/bash