0
点赞
收藏
分享

微信扫一扫

docker mysql数据持久化

船长_Kevin 2023-10-24 阅读 33

在昨天文章的基础上增加数据持久化功能,避免删除容器后数据丢失。

代码

mkdir -p /data/mysql_data

docker run -itd \
  --name=mysql_container1 \
  -p 3307:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /data/mysql_data:/var/lib/mysql \
  mysql:8.1.0

docker exec -it mysql_container1 mysql -uroot -p123456

CREATE DATABASE mydb;
USE mydb;
CREATE TABLE mytable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20));
INSERT INTO mytable (name) VALUES ('Alice1'), ('Bob'), ('Charlie');
exit;

docker rm -f mysql_container1

重新创建mysql容器

docker run -itd \
  --name=mysql_container1 \
  -p 3307:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /data/mysql_data:/var/lib/mysql \
  mysql:8.1.0

docker exec -it mysql_container1 mysql -uroot -p123456
select * from mydb.mytable;
exit;

执行记录

docker mysql数据持久化_mysql

docker mysql数据持久化_mysql_02

命令解释

# 宿主机创建msyql数据文件挂载目录
mkdir -p /data/mysql_data

# 创建mysql容器,将3306端口映射到宿主机3307端口,目录挂载到刚才创建的位置,指定root用户密码
docker run -itd \
  --name=mysql_container1 \
  -p 3307:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /data/mysql_data:/var/lib/mysql \
  mysql:8.1.0

# 进入mysql容器,登录到mysql
docker exec -it mysql_container1 mysql -uroot -p123456

# 在mysql命令行创建数据、表、插入3条数据
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE mytable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20));
INSERT INTO mytable (name) VALUES ('Alice1'), ('Bob'), ('Charlie');
exit;

# 强制删除mysql容器
docker rm -f mysql_container1

第二段命令解释

docker run -itd \
  --name=mysql_container1 \
  -p 3307:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /data/mysql_data:/var/lib/mysql \
  mysql:8.1.0

docker exec -it mysql_container1 mysql -uroot -p123456

# 查询mydb数据库下面的mytable表,可以看到刚才的3条数据
select * from mydb.mytable;
exit;

windows挂载目录

docker run -v D:\myfiles:/app/files <image_name>

举报

相关推荐

0 条评论