centos mysql 实战 第二十六节课 mysql in docker

centos mysql  实战  第二十六节课   mysql in  docker


删除系统自带的 Docker

yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装官方的 docker repo

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list |grep  docker-ce
yum install -y  docker-ce docker-ce-cli containerd.io

Docker 配置
这个动作在 docker 启动之前执行

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
"data-root": "/data/docker"
}

这里只是配置一个利用腾讯云的 docker repo 加速(这里也可以自行换为阿里
云的 repo), 同时指定了 Docker image,container 存储的位置。
可以配置参数参考:
https://docs.docker.com/engine/reference/commandline/dockerd



启动关闭 Docker
启动 Docker

systemctl start docker


关闭 Docker

systemctl stop docker


查看 Images

docker images


查看运行中的 container

docker ps


查看本机上所有 container

docker ps -a


利用 Oracle 官方的 Image 启动 MySQL
Docker image 搜索点: https://hub.docker.com/
官方的 Image: https://hub.docker.com/r/mysql/mysql-server
1. 拉取官方 Image

docker pull mysql/mysql-server:latest

查看 image

docker images

查看该 image 的大概信息

docker inspect mysql/mysql-server:latest
略

2. 基于该 Image: mysql-server:latest 启动 container

docker run --name=mysql3306 -d mysql/mysql-server:latest

查看运行的 container

docker ps

3. 查看 MySQL 的密码并连接上去

docker logs mysql3306 2>&1 |grep PASSWORD
mavax10GEsAw#umQiPyL@P4zvUh

但现在这个 container 没办法从外面连接上去, 需要进入行 docker 后连接

docker exec -it mysql3306 mysql -uroot -p

接下来我们想要做一个可以用于做功能测试的 MySQL。
上面的 container 到这里就可以干掉不要了。

docker stop mysql3306
docker rm mysql3306
docker ps -a  #确认无 mysql3306

指定配置启动 3306

docker run --name=mysql3306 -p3306:3306 -p33060:33060 -v  
/data/mysql/zst1_mysql_3306.cnf:/etc/my.cnf -v   
/etc/localtime:/etc/localtime -e   
MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_USER='zst' -e  
MYSQL_PASSWORD='wubxwubx' -e MYSQL_DATABASE='zst' -d  
mysql/mysql-server:latest

参数说明:
-p3306:3306,指定端口,格式为:-p 宿主机端口:Container 端口。
-v /data/mysql/zst1_mysql_3306.cnf:/etc/my.cnf,配置文件
bind(映射),把本地的/data/mysql/zst1_mysql_3306.cnf 映射到mysql3306 这个实例中的/etc/my.cnf
确认端口监听是不是 Ok

ss -lnt |egrep "3306|33060"
docker logs mysql3306 2>&1 |grep PASSWORD
[Entrypoint] GENERATED ROOT PASSWORD: 0b)3gmoHYlraqkUpedEnBIM@G0s

登录 MySQL 并创建帐号

docker exec -it mysql3306 mysql -uroot -p
grant all privileges on *.* to 'nihao'@'%' identified by '123456' with grant option;

通过宿主机登录 MySQL

mysql -h 172.17.0.2 -unihao -p123456




同时可以执行 show global variables 确认几个关键参数是不是我们指定的值。
到这里 3306 实例创建完事。
但这里还有一个问题:Container 中时间和我们宿主机的时间差了 8 个小时,这个主要是 Image 的时
间设置有问题,我们可以在初始化 3307 实例时把宿主机的时区给带过去就可以解决了。

select sysdate(),now(),@@timezone;




mysql -h192.168.11.111 -P3307 -uzst -pwubxwubx

f

原文地址:https://www.cnblogs.com/MYSQLZOUQI/p/13533845.html