Docker安装Mysql
安装步骤
- 在mysql - Official Image | Docker Hub找到需要Mysql镜像。

- 执行命令
docker pull mysql:tag下载镜像。
- 启动一个Mysql容器:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -p 33060:33060 -v /mydir:/var/lib/mysql -d mysql:tagsome-mysql:表示你的mysql容器名my-secret-pw:设置root用户密码tag:你想要的mysql镜像的标签
自定义Mysql配置
默认的Mysql Server配置可以在/etc/mysql/my.cnf下找到。
如果需要使用在宿主目录下的自定义Mysql配置,可使用数据卷将宿主目录与容器目录关联,关联到容器路径console/etc/mysql/conf.d。mysql会结合使用/etc/mysql/my.cnf 和 /etc/mysql/conf.d/config-file.cnf的配置,后者的配置会覆盖前者。
环境变量
mysql容器使用到了一些环境变量,我们可以在run命令创建容器时,设置容器的环境变量值。
值得注意的是,如果容器内已包含一个数据库,那么启动容器时任何环境变量都不会生效,已经存在的数据库不会有任何改变。
以下是所有预设的环境变量:
MYSQL_ROOT_PASSWORD
这是个必填变量。该变量用于设置root用户的密码
MYSQL_DATABASE
该变量是可选的。允许你在创建Mysql容器时,创建指定名称的数据库。如果你指定了用户/密码,则这个用户会被授予这个数据库的超级用户权限。
MYSQL_USER, MYSQL_PASSWORD
这是个可选的环境变量,需要同时使用。用于创建一个新用户,该用户会被授予MYSQL_DATABASE指定的数据库的超级用户权限。
MYSQL_ALLOW_EMPTY_PASSWORD
这是个可选的环境变量。给变量设置一个非空值,比如yes,则允许创建一个root密码为空的容器。不建议这么做,因为不安全,如何人都可以访问你的数据库。
MYSQL_RANDOM_ROOT_PASSWORD
这是个可选的环境变量。给变量设置一个非空值,比如yea,则会生成一个随机的root密码,密码会被打印到控制台。
MYSQL_ONETIME_PASSWORD
root用户在第一次容器初始化完成后失效,在第一次登录后强制重置密码。当赋予空密码给root用户时,这个设置会被激活。这个功能在MYSQL 5.6+以上有效。
MYSQL_INITDB_SKIP_TZINFO
默认情况下,入口点脚本会执行CONVERT_TZ()函数加载时区信息,如果需要停用该功能,可以给变量设置一个非空值。
Docker Secrets
结合Docker Secrets机制,加环境变量加密并传递到到Mysql容器中。
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag数据库初始化
Mysql镜像允许我们在创建容器时对指定数据库进行初始化。在创建Mysql容器时,容器会在/docker-entrypoint-initdb.d目录下寻找数据库初始化文件并执行,支持.sh, .sql 和 .sql.gz文件。
如何使用该机制?
使用Dockerfile构建镜像,复制初始化文件到/docker-entrypoint-initdb.d目录。
数据库文件存储
数据库文件默认存放在容器的/var/lib/mysql目录下,可以通过挂载数据卷将数据库文件存放到宿主机的目录下。