大家好,欢迎各位工友。 本篇呢我们就来演示一下如何在Docker中部署MySQL容器,可以按照以下步骤进行:
1. 搜索镜像
首先搜索MySQL镜像,可以使用以下命令:
docker search mysql
2. 拉取镜像
根据需求选择MySQL或MariaDB,拉取镜像的命令如下:
docker pull mysql
3.配置
建立相应的目录,用于挂载,根据自己的目录进行新建:
mkdir -p /kim/mysql/data
mkdir -p /kim/mysql/conf
mkdir -p /kim/mysql/log
4. 启动容器
镜像拉取完成后,可以启动容器,使用以下命令:
docker run -d --privileged=true --restart=always --name mysql -p 3306:3306 \
-v /kim/mysql/conf:/etc/mysql/conf.d \
-v /kim/mysql/log:/var/log/mysql \
-v /kim/mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql
解释:
-d
:在后台运行容器;--privileged=true
:赋予容器主机的所有权限;--restart=always
:设置容器总是自动重启;--name mysql
:指定容器名称为mysql;-p 3306:3306
:端口映射,将主机端口3306映射到容器端口3306;-v /kim/mysql/conf:/etc/mysql/conf.d
:将主机上的配置文件映射到容器内的目录;-v /kim/mysql/log:/var/log/mysql
:将主机上的日志目录映射到容器内;-v /kim/mysql/data:/var/lib/mysql
:将主机上的数据目录映射到容器内;-v /etc/localtime:/etc/localtime
:映射主机时间到容器内以保持时间同步;-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai
:设置MySQL root密码和时区;mariadb
:指定使用的Docker镜像。
5. 数据库配置(最新版本可以忽略)
旧版本的数据库会有编码问题,导致中文乱码,插入数据可能会报错。如果用的是最新版本,是没有问题的。
下面针对编码问题进行配置:
在挂载的配置目录下,我这里是 /kim/mysql/conf
目录,在 conf
目录下新建配置文件 my.cnf
,内容如下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
6. 重启容器
修改配置后,需要重启容器生效:
docker restart 容器ID
7. 测试验证
1. 使用firewall-cmd命令打开3360端口:
sudo firewall-cmd --zone=public --add-port=3360/tcp --permanent
这会将3360端口添加到防火墙规则中,持久生效。
2. 重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
3. 确认端口3360已打开:
sudo firewall-cmd --list-ports
使用客户端连接工具测试是否连接成功
8、总结
上述我们演示了如何在docker中安装mysql镜像以及启动mysql容器,下篇文章我们来演示redis的安装教程。