安装docker
1,首先安装docker (在线)
yum -y install docker
2,启动docker服务
service docker start
3,测试运行下docker
docker run hello-world
由于本地电脑上不存在hello-world镜像,所以会先去下载一个hello-world镜像,并在容器内运行
docker部署mysql
1,查看dokcer仓库中已有的mysql镜像(网络必须可用)
docker search mysql
2,拉取mysql镜像
docker pull mysql
不写版本的话,拉取的mysql比较新,也可以指定版本
docker pull mysql:8
3,查看本地的mysql镜像
docker images
4,运行mysql 容器
docker run --name=mysql -it -p 3304:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
MYSQL_ROOT_PASSWORD指mysql密码
我这里用上面的命令有报错,mysql不能起来,查看日志会有以下提示
用下面的命令,加了–privileged=true
docker run --name=mysql -it -p 3304:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql
重新创建容器,即可
5,将sql文件通过docker复制到容器中
docker cp install/aa.sql d035500df9ec:/home/
6,进入到容器中
docker exec -it d0355 bash
7,登录mysql,创建数据库,并导入数据库sql文件
mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database license;
mysql> use license;
mysql> source /home/license.sql
8,外界连接mysql
mysql -h192.168.190.133 -P 3304 -uroot -p
宿主机的ip,其他文章说可以在springboot项目里将
datasource:
url: jdbc:mysql://localhost:3304
地址改为宿主机的ip就可以运行,我这里试的不行,有时间再试下
9,将导入的数据库的mysql容器打成镜像,下次就可以使用了
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Option 功能
-a 指定新镜像作者
-c 使用 Dockerfile 指令来创建镜像
-m 提交生成镜像的说明信息
-p 在 commit 时,将容器暂停|
将mysql容器打成镜像
docker commit -a "jing" -m "creat a new docker image by sby" d035500df9ec mysql-new:v1.0
查看镜像,已经存在了刚才创建的镜像
docker images
10,mysql容器打成镜像后,创建容器会发现里面的数据库不存在,与原始的镜像一样
由于mysql容器创建数据库时,会将数据放在/var/lib/mysql目录下(docker inspect containerID/name可查看)
当运行docker commit时,容器中的/var/lib/mysql目录的更改并不会提交到镜像中,但这些更改是随时与宿主机对应的目录同步的
解决办法:
mysql镜像的数据默认都在/var/lib/mysql目录下,我们修改默认的数据库的数据位置就行,不要放在/var/lib/mysql下面。
具体步骤:
1,进入容器里
docker exec -it 容器ID bash
2,创建mysql源数据备份目录
mkdir /mysqldata/
3,复制mysql源目录到备份目录
cp -r /var/lib/mysql/ /mysqldata/
4,修改mysql.cnf文件
# 修改vim datadir的值为备份目录路径
datadir=/mysqldata/mysql
由于容器里没有vim,为了镜像小一些,就不安装了,直接复制出来,修改完,再复制到容器了
docker cp d035500df9ec:/etc/my.cnf /home/jing/
docker cp /home/jing/my.cnf d035500df9ec:/etc/my.cnf
再去执行步骤9即可
11,将镜像打包,到其他服务器能直接使用
docker save -o /home/jing/mysql.tar mysql-new
将mysql.tar复制到其他服务器上
导入mysql镜像
docker load -i mysql.tar
查看镜像就有了
12,创建mysql容器
docker run --name=mysqlnew -it -p 3304:3306 -e MYSQL_ROOT_PASSWORD=qwer123 -d fb4c0bc4ddc6