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