Mysql Docker 镜像使用

Mysql Docker 镜像使用

Mysql 镜像获取

  1. 打开docker官方registry https://hub.docker.com/

在这里插入图片描述

  1. 搜索Mysql关键字

在这里插入图片描述

  1. 选择官方Mysql镜像

在这里插入图片描述

  1. 选择需要的版本,复制命令拉取镜像

在这里插入图片描述

Mysql镜像如何使用

在上图3的链接中【https://hub.docker.com/_/mysql?tab=description】,有详细的使用说明。简单罗列如下:

  1. 启动mysql server 实例
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

some-mysql:容器名

my-secret-pw: mysql root账号密码

tag:mysql版本号

比如:

docker run --name msyql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d -P mysql:5.7
  1. 使用mysql 客户端命令行连接到mysql server
 docker run -it --rm mysql:tag mysql -hsome.mysql.host -usome-mysql-user -p

比如:

 docker run -it --rm mysql:5.7 mysql -h172.17.0.2 -uroot -p
  1. 查看mysql server日志
docker logs some-mysql

比如:

docker logs msyql5.7

如何配置Mysql

镜像的默认配置位于/etc/mysql/my.cnf,该配置文件主要引用位于目录/etc/mysql/conf.d//etc/mysql/conf.d/ 中的配置。

my.cnf:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

如果想要用自己的配置文件来启动mysql,可以将自己的配置文件目录挂载容器的/etc/mysql/conf.d/上,这样mysql就自动引入自定义配置了:

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

/my/custom: 本地的配置文件路径,比如里面有配置文件config-file.cnf,那么容器启动后,在容器的/etc/mysql/conf.d目录中就会存在config-file.cnf文件,那么也会被my.cnf加载。

如果自定义的配置项少,也可以直接给mysqld传递参数的方式配置:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

使用下面这条命令可以查询所有可配置的选项(本质运行mysqld --verbose --help 命令):

docker run -it --rm mysql:tag --verbose --help

环境变量

MYSQL_ROOT_PASSWORD 用来设置root账号的密码

MYSQL_DATABASE 用来指定数据库

MYSQL_USER, MYSQL_PASSWORD 用来指定用户和密码

MYSQL_ALLOW_EMPTY_PASSWORD 是否允许root账号是空密码

MYSQL_RANDOM_ROOT_PASSWORD 为root账号随机生成密码

MYSQL_ONETIME_PASSWORD 设置root账号登录后必须修改密码

数据存储

容器中的数据目录位于 /var/lib/mysql 中。那么基于docker的数据卷管理,有两种管理数据存储方式:

  1. 使用docker内部的数据卷管理机制,这种方式非常方便,不需要你做额外的处理,不好的是不方便在宿主机上找到对应的数据目录。
  2. 自己在宿主机上创建数据目录,并mount到容器中的 /var/lib/mysql 目录上。这种方式好处是数据目录容易找到,不好的是你需要确保宿主机上的数据目录存在,权限正确等额外的管理工作。

一般我们开发在本地使用时,使用第一种方式就好了。

对于第二种方式,可使用如下命令来将宿主机的目录映射到容器中:

 docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

其他注意事项

  1. 使用已经存在的数据库

    此时MYSQL_ROOT_PASSWORD环境变量设置会被忽略。

  2. 使用特定的账号运行

    docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    
  3. dump & restore

    dumps:

    docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
    

    restore:

    docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值