一、创建 Mysql 服务

通过一条 Dacker 命令创建并启动一个 Mysql 容器:

$ docker run --name foo-mysql \
-e MYSQL_ROOT_PASSWORD=mysecret \
-e LANG=C.UTF-8 \
-p 3306:3306/tcp \
-v /path/to/mysql/conf:/etc/mysql/conf.d \
-v /path/to/mysql/db:/var/lib/mysql \
-d mysql:5.6 \
--character-set-server=utf8mb4 \
--init_connect='SET NAMES utf8mb4;'
  • docker run:创建并启动一个容器,如果该容器对应的镜像本地不存在,则先自动 pull 一个镜像到本地。

  • —-name:设置一个容器的别名。

  • -e:设置环境变量。MYSQL_ROOT_PASSWORD 为 root 用户的密码,在创建 Mysql 容器时必须设置。也可以通过设置 MYSQL_ALLOW_EMPTY_PASSWORDyes 来允许 Mysql 容器以 root 用户密码为空的形式启动,但不建议,因为这会导致安全问题。LANG 设置为 C.UTF-8 是因为基础镜像默认语言无法使用中文,也就无法在 Mysql 控制台输入和显示中文,所以需要修改,可以使用 locale 命令查看当前语言,用 locale -a 命令查看可用语言。

  • -p:设置端口映射。冒号前面的 3306 为本地主机端口,冒号后面的 3306 为容器端口。可以使用多个 -p 选项。此项不设置的话容器端口不会暴露给主机,即便 Dockerfile 内设置了 EXPOSE 指令。另外不建议使用 -P (大写)选项,因为该选项会自动设置一个数值较大的本地端口号来映射,无法手动控制。

  • -v:设置挂载卷,将本地的目录挂载到容器中,冒号前面是本地目录,后面是容器中的目录。示例中的两个 -v 选项分别将 Mysql 的配置文件和数据库目录暴露给本机。

  • -d:容器后台运行。

  • mysql:5.6:指定要创建的容器名称和版本号。这里版本号设置为 5.6 会安装 Mysql 5.6 的最新版本。也可以直接指定具体版本号,如 5.6.43

  • --character-set-server=utf8mb4:设置服务器级别的字符集为 utf8mb4。许多 Mysql 配置选项可以通过 docker run 命令的长选项传递给 mysqld。可以通过下面这条命令来查看可用的配置选项:

    $ docker run -it --rm mysql:tag --verbose --help
    
  • -—init_connect:性质同上面的 --character-set-server 一样,都是用来调整 Mysql 的系统配置选项。这个参数是设置连接字符集为 utf8mb4

二、进入 Mysql 控制台

使用下面的命令进入 Mysql 容器:

$ docker exec -it foo-mysql bash

进入容器后便可使用 Mysql 命令了:

$ # 查看 Mysql 版本信息
root@5260587b0c60:/# mysql -V
$ # 登录 Mysql 控制台
root@5260587b0c60:/# mysql -uroot -pmysecret

可以看到,容器内的系统名称(5260587b0c60)为该容器的 ID。

三、参考文章

Mysql 官方镜像

(完)