开机自动启动
docker update mysql --restart=always
参考:
https://www.cnblogs.com/sablier/p/11605606.html
[TOC]
docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
docker images
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
-
-p:主机(这里指的是虚拟机)与容器端口的映射关系,":"前为主机目录,之后为容器目录
-
-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录(主机目录挂载到容器)
var/log/mysql(mysql的日志)文件夹和var/lib/mysql(存储物理上的表)
-
-e :启动参数
-
--name: 指定容器名
-
-d :静默运行容器
修改主机的指定位置就会影响容器对应的位置,==需要重启容器==
如果还是无法解决请参考,==可能是之前挂载的volumes没有删除干净==
https://blog.csdn.net/qq_41999034/article/details/106162366
==注意==, 这里建议采用exec
, 因为通过这种方式与tty
交互, 容器不会退出, 如果采用attach
, 退出tty
容器就会退出
docker exec -it mysql /bin/bash //表示进入容器后执行 /bin/bash
mysql -uroot -proot //拉取的镜像本身是一个精简的Linux系统
这里只做校验, 具体操作通过Navicat
==这里说明MySQL容器就一个精简的Linux容器==
在主机上操作
yum -y install vim* //安装vim
vi my.conf
配置文件
[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
重启MySQL容器
docker restart mysql //重启
docker start mysql //开启
重新进入MySQL容器
docker exec -it mysql /bin/bash
查看容器内配置文件
systemctl status firewalld //查看防火墙状态
systemctl start firewalld //开启防火墙
firewall-cmd --add-port=3306/tcp --permanent //永久开放端口
firewall-cmd --add-service=http --permanent //开放http权
firewall-cmd --reload //重启防护墙,但是不会中断用户连接,不丢失状态
firewall-cmd --list-all //查看开放的端口
如果这里没有-cmd
选项需要yum install net-tools