Docker是我们常用的容器引擎,使用Docker来部署和管理我们的常用数据库例如MySQL是非常的方便的。不过使用Docker安装部署MySQL还是有一些需要注意的地方的。
1,拉取MySQL镜像
使用docker pull
命令即可拉取:
docker pull mysql
2,创建数据卷
MySQL作为数据库,其中通常存放我们的用户数据,都是很重要的,因此在容器化部署MySQL时,将MySQL的数据文件等等持久化是非常有必要的。
这里我们使用具名挂载的方式挂载MySQL容器的数据卷,方便管理。
先创建三个数据卷,分别用于挂载并持久化MySQL的数据文件、配置文件和日志这三个目录:
docker volume create mysql-data docker volume create mysql-config docker volume create mysql-log
这样,我们就创建了三个数据卷,这三个数据卷分别被命名为mysql-data
、mysql-config
和mysql-log
,大家也可以自行取名。
3,创建MySQL容器
通过以下命令创建MySQL容器:
docker run -id--name=mysql -v mysql-config:/etc/mysql/conf.d -v mysql-log:/logs -v mysql-data:/var/lib/mysql -p3306:3306 -eMYSQL_ROOT_PASSWORD=123456-eLANG=C.UTF-8 mysql
这样,就完成了MySQL容器的创建和启动,上述命令的参数意义如下:
-id
将MySQL容器挂在后台运行--name=mysql
将容器起名为mysql
,大家可以自己起名,该参数可以省略-v mysql-config:/etc/mysql/conf.d
把MySQL容器中的配置文件目录挂载至上述创建的名为mysql-config
的数据卷上面,还有两个-v
挂载数据卷的参数同理-p 3306:3306
把容器的3306
端口映射到宿主机的3306
端口,这样才能从外网访问这台机器上的MySQL,若你的数据库只需要从本机访问,就可以去除这个参数-e MYSQL_ROOT_PASSWORD=123456
设置容器环境变量MYSQL_ROOT_PASSWORD
的值为123456
,这个环境变量表示MySQL的root
用户的密码,一定要设置,这里设置了密码为123456
,大家可以自定义-e LANG=C.UTF-8
设置容器的语言环境变量LANG
值为C.UTF-8
,这个必须要设置,否则容器内默认是英文环境,使得MySQL无法存放中文内容
4,修改MySQL配置文件
上述我们已经把创建了数据卷并具名挂载了容器内的MySQL配置目录,只需查看数据卷的位置并修改其中文件即可。
查看数据卷mysql-config
的位置:
docker volume inspect mysql-config
网络异常,图片无法展示
|
进入这个目录,可以看到里面有两个默认的MySQL配置文件,使用vim
编辑即可,在里面加入自定义的配置。
网络异常,图片无法展示
|
编辑完成记得重启容器:
# 上述创建时容器名为mysql,若为自定义此处换为自己的docker restart mysql
5,第一次添加用户或者设置外网访问
创建完成容器之后,我们可以先进入这个MySQL容器,并使用root
用户连接,创建用户等等。
先进入容器的shell:
docker exec -it mysql bash
这时终端就变成了容器内的终端,使用下列命令即可连接MySQL:
mysql -u root -p
密码就是上述创建容器时你设置的MYSQL_ROOT_PASSWORD
容器环境变量的值。
至于配置文件和用户添加等等常用操作这里不再赘述了,可以直接参考这篇博客的修改配置文件和添加用户等等部分:传送门