在昨天文章的基础上增加数据持久化功能,避免删除容器后数据丢失。
代码
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;
执行记录
命令解释
# 宿主机创建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>