docker部署mysql及制作镜像压缩包实践
前言:本次教程系统是基于centos7。
拉取mysql镜像
1、需要先配置docker加速镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.wctmd.us.kg"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker如果不配置是无法拉取mysql镜像的,如下

配置后执行拉取命令:

执行如下命令可查看已拉取的镜像及版本
docker images

也可设置特点版本下载所需要的mysql镜像,如:
docker pull mysql:5.7
我下载了mysql5.7版本的镜像


2、制作压缩包
docker save -o mysql.tar mysql
mysql.tar 压缩包名称
mysql 本地mysql镜像名称

删除mysql镜像
docker rmi mysql

现在我本地只剩mysql5.7的镜像
切换到压缩包的目录,用本地压缩包加载镜像,这样就不用每次都远程去拉取镜像
docker load -i mysql.tar

3、用镜像部署mysql容器
需要把mysql配置文件my.cnf上传,my.cnf内容如下:
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/8.3/en/server-configuration-defaults.html [mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M # Remove leading # to revert to previous value for default_authentication_plugin, # this will increase compatibility with older clients. For background, see: # https://dev.mysql.com/doc/refman/8.3/en/server-system-variables.html#sysvar_default_authentication_plugin # default-authentication-plugin=mysql_native_password host-cache-size=0 skip-name-resolve datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock secure-file-priv=/var/lib/mysql-files user=mysql default-time-zone='Asia/Shanghai' pid-file=/var/run/mysqld/mysqld.pid [client] socket=/var/run/mysqld/mysqld.sock !includedir /etc/mysql/conf.d/
其中要注意设置mysql时区,上面的配置我加了时区,不然数据库默认是UTC时区
default-time-zone='Asia/Shanghai'
把my.cnf上传到/usr/local/mysql目录下
执行下面命令即可部署mysql容器
docker run -d --restart=always --name mysql -p 3307:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql
注意3307是宿主机端口,3306是容器内部mysql端口,
--restart=always 表示把mysql容器设置到开机启动服务中,系统重启后,mysql容器随机启动
-v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 是把mysql数据库数据、配置文件挂载到宿主机中,即使删除了容器,mysql数据还存在,不丢失。每次用上面的命令重新部署容器,数据库数据和配置文件都会自动加载到容器中。
查看MySQL容器是否部署成功:
docker ps

说明已经部署成功,且状态是正常的.
用命令进入容器,进入mysql,验证mysql是否正常运行
docker exec -it mysql /bin/bash
mysql -uroot -p
然后输入密码即可进入到mysql中:

至此,mysql部署完成,远程访问,使用navicat或者phpmyadmin等工具,配置端口(我设置的宿主机端口是3307)。即可访问成功!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。


最新评论