镜像下载官网
Docker Hub Container Image Library | App Containerization
安装mysql
docker hub上查找mysql镜像
从docker hub上拉取mysql镜像到本地标签为5.7
#拉取 docker pull mysql:5.7 #查看 docker images mysql:5.7
版本命令可以从docker hub查找的页面进行有一个Tags这就是每一个版本
使用mysql
#启动 docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 #查看 docker ps #进入容器 docker exec -it CONTAUNER ID /bin/bash #启动mysql mysql -uroot -p 进入进行测试 #查看所有表 show databases; #创建一个db01数据库 create database db01; #进入db01 use db01; #创建表 create table t1(id int,name varchar(20)); #添加数据 insert into t1 values(1,'z3'); #查看t1 select * from t1; #字符隐患 show variables like 'character%' #如果不下心删除容器,里面的MySQL数据怎么办 #退出docker和mysql exit #查看 docker ps #删除mysql docker rm -f #查看 docker ps
实战
新MySQL建实例并启动
docker run -d -p 3306:3306 --privileged=true
-v /zzyyuse/mysql/log:/var/log/mysql
-v /zzyyuse/mysql/data:/var/lib/mysql
-v /zzyyuse/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
查看
docker ps
第二种
Nacos需要
- 创建自定义网络(用于容器通讯)
docker network create common-network
- 查看网络
docker network ls
#拉取mysql5.7
sudo docker pull mysql:5.7
创建挂载文件夹
//mysql配置文件
mkdir -p /mydata/mysql/conf
//mysql数据文件路径
mkdir –p /mydata/mysql/data
//日志文件路径
mkdir -p /mydata/mysql/logs
创建实例并启动
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
查看镜像
docker ps
#进入mysql容器中
cd /zzyyuse/mysql/conf
#查看
ls -l
#添加
vim my.cnf
#插入以下内容
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET MANES utf8'
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
#保存
:wq
#查看是否添加成功
cat my.cnf
#重新启动MySQL容器实例
docker restart mysql
#进入容器
docker exec -it mysql /bin/bash
#启动mysql
mysql -uroot -p
#查看字符隐患
show variables like 'character%'
#查看所有表 show databases;#创建一个db01数据库 create database db01; #进入db01 use db01; #创建表 create table t1(id int,name varchar(20)); #添加数据 insert into t1 values(1,'z3'); #查看t1 select * from t1;#退出docker和mysql exit #查看 docker ps #删除mysql docker rm -f #查看 docker ps
测试删完后数据还在不会丢失的情况 在安装一次就行
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
Docker进入mysql容器内部
docker exec -it mysql /bin/bash
查看mysql 位置 ,文件
whereis mysql
修改mysql配置文件
my.cnf 复制内容
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET MANES utf8'
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql
docker restart mysql
docker ps -a
docker exec -it 容器ID /bin/bash
docker exec -it mysql /bin/bash
开机自动启动
docker update mysql --restart=always
Sonar中myql环境搭建
docker run --name mysql5.7 -v /data/mysql5.7-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
进入容器中创建数据库与用户
进入容器
docker exec -it mysql5.7 bash
连接数据库
mysql -uroot -p123456
创建数据库db_sonar
create database db_sonar character set utf8 collate utf8_general_ci; flush privileges;
创建数据库用户,用户名密码都为sonar
grant all privileges on db_sonar.* to 'sonar'@'%'identified by 'sonar' with grant option;
flush privileges;
root@ubuntu:/data# docker exec -it mysql5.7 bash
root@ec7039cd8020:/#
root@ec7039cd8020:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 ec7039cd8020
结果:
由上面命令可以查到,我的容器ip为172.17.0.2