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

使用官方镜像可以快速启动一个MySQL Server实例,如下所示:
- $ docker run --name hi-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest
- e6cb906570549812c798b7b3ce46d669a8a4e8ac62a3f3c8997e4c53d16301b6
以上指令中的hi-mysql是容器名称,123为数据库的root密码。
使用docker ps指令可以看到现在运行中的容器:
- $ docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- e6cb90657054 mysql "docker-entrypoint.sh" 4 minutes ago Up 3 minutes 3306/tcp hi-mysql
当然,还可以使用—link标签将一个应用容器连接至MySQL容器:
- $ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
MySQL服务的标准端口是3306,用户可以通过CLI工具对配置进行修改:
- $ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_
- PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_
- ROOT_PASSWORD"'
官方MySQL镜像还可以作为客户端,连接非Docker或者远程的MySQL实例:
- $ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
1.系统与日志访问
用户可以使用docker exec指令调用内部系统中的bash shell,以访问容器内部系统:
- $ docker exec -it some-mysql bash
MySQL Server日志可以使用docker logs指令查看:
- $ docker logs some-mysql
2.使用自定义配置文件
如果用户希望使用自定义MySQL配置,则可以创建一个目录,内置cnf配置文件,然后将其挂载至容器的/etc/mysql/conf.d目录。比如,自定义配置文件为/my/custom/config-file.cnf,则可以使用以下指令:
- $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_
- 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,则可以使用以下指令:
- $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果需要查看可用选项的完整列表,可以执行:
- $ docker run -it --rm mysql:tag --verbose --help
