docker上部署mysql,并重新打成镜像

安装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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值