Henry's blog

Docker安装MySQL

Mar 27, 2019 Docker mysql

1. 获取mysql 5.7镜像

docker pull mysql:5.7

2. 启动一个mysql容器

docker run \
--name dev-mysql \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

2.1. 参数解释

参数名 参数意义
--name dev-mysql 设置容器名称
--restart always 容随docker服务的启动而启动
-p 3306:3306 映射容器的3306端口到本地的3306端口
-e MYSQL_ROOT_PASSWORD=123.com mysql的root密码
--character-set-server=utf8mb4 设置字符集
--collation-server=utf8mb4_unicode_ci 设置排序规则
-v ~/docker/mysql/data:/var/lib/mysql (可选项)将mysql的数据库文件存映射到本地

3. 打开mysql客户端

docker exec -it dev-mysql mysql -uroot -p

下面的方式不需要输入root密码

docker run -it --link dev-mysql:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

4. 查看该容器的详细信息

注意:这里的dev-mysql是刚刚启动的容器的name

docker inspect dev-mysql

5. 查看该容器valume的挂载位置 也就是数据库文件的存放位置

docker inspect dev-mysql | grep Source

你或许会看到类似的输出,进入这个目录就可以看到数据库文件了

"Source": "/var/lib/docker/volumes/438e9c1c683c7fef0ad54e60e09941fc05165c950f2f38f1c99f197071c8ad3f/_data",

6. 查看容器日志

docker logs dev-mysql

7. 导出所有数据库

docker exec dev-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > ~/all-databases.sql

8. 容器的常用操作

# 启动容器
docker start dev-mysql
# 停止容器
docker stop dev-mysql
# 重启容器
docker restart dev-mysql
# 删除容器 需要先停止容器
docker rm dev-mysql
# 删除镜像 需要先删除所有容器
docker rmi mysql:5.7
# 删除未使用的卷
docker volume prune

参考资料

Docker Hub

Leave a Comment