12.1 MySQL

MySQL是全球最流行的开源的开源关系数据库软件之一,因为其高性能、成熟可靠和适应性而得到广泛应用。MySQL目前在不少大规模网站和应用中被使用,比如Facebook、Twitter和Yahoo!等。

12.1 MySQL - 图1

使用官方镜像可以快速启动一个MySQL Server实例,如下所示:


  1. $ docker run --name hi-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest
  2. e6cb906570549812c798b7b3ce46d669a8a4e8ac62a3f3c8997e4c53d16301b6

以上指令中的hi-mysql是容器名称,123为数据库的root密码。

使用docker ps指令可以看到现在运行中的容器:


  1. $ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. e6cb90657054 mysql "docker-entrypoint.sh" 4 minutes ago Up 3 minutes 3306/tcp hi-mysql

当然,还可以使用—link标签将一个应用容器连接至MySQL容器:


  1. $ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql

MySQL服务的标准端口是3306,用户可以通过CLI工具对配置进行修改:


  1. $ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_
  2. PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_
  3. ROOT_PASSWORD"'

官方MySQL镜像还可以作为客户端,连接非Docker或者远程的MySQL实例:


  1. $ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

1.系统与日志访问

用户可以使用docker exec指令调用内部系统中的bash shell,以访问容器内部系统:


  1. $ docker exec -it some-mysql bash

MySQL Server日志可以使用docker logs指令查看:


  1. $ docker logs some-mysql

2.使用自定义配置文件

如果用户希望使用自定义MySQL配置,则可以创建一个目录,内置cnf配置文件,然后将其挂载至容器的/etc/mysql/conf.d目录。比如,自定义配置文件为/my/custom/config-file.cnf,则可以使用以下指令:


  1. $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_
  2. PASSWORD=my-secret-pw -d mysql:tag

这是新的容器some-mysql启动后,就会结合使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf两个配置文件。

3.脱离cnf文件进行配置

很多的配置选项可以通过标签(flags)传递至mysqld进程。这样用户就可以脱离cnf配置文件,对容器进行弹性的定制。比如,用户需要改变默认编码方式,将所有表格的编码方式修改为uft8mb4,则可以使用以下指令:


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

如果需要查看可用选项的完整列表,可以执行:


  1. $ docker run -it --rm mysql:tag --verbose --help