Mysql数据挂载
MySQL 的数据创建一个数据卷(Volume)。数据卷是 Docker 推荐的持久化数据方式,它由 Docker 自己管理,确保数据不会随着容器的删除而丢失。
sudo docker volume create mysql_data
sudo: 以管理员权限运行命令。docker volume create: 这是创建数据卷的命令。mysql_data: 你为这个数据卷指定的名字,可以自定义。
第二步:运行 MySQL 容器
sudo docker run -d --name mymysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-v mysql_data:/var/lib/mysql \
--restart always \
mysql:8.0
sudo docker run: 这是创建并启动一个容器的核心命令。-d: Detach(分离)模式。让容器在后台运行,不会占用你的终端。--name mymysql: 为容器指定一个名称,方便你管理它。-p 3306:3306: Publish(发布)端口。左边的 3306: 宿主机(你的服务器)的端口。当外部应用或客户端连接到这个端口时,请求会被转发到容器。右边的 3306: 容器内部的端口,MySQL 服务在容器里默认监听这个端口。-e: Environment(环境变量)。MYSQL_ROOT_PASSWORD=your_password: 设置 MySQL root 用户的密码。
请务必将 your_password 替换为一个安全的、你自己设定的密码。-v: Volume(数据卷)挂载。mysql_data: 这是你第一步创建的数据卷名称。:: 分隔符。/var/lib/mysql: 容器内部的路径。这是 MySQL 镜像默认存储数据库文件的目录。docker 会把数据卷里的内容同步到这个目录。--restart always: 设置容器的重启策略。即使容器因为某些原因停止或服务器重启,docker 都会自动重启这个容器。mysql:8.0: 要使用的镜像名称和版本。
第三步:验证数据持久化 要验证挂载是否成功,你可以创建一个测试数据库,然后删除容器再重新创建。
进入容器
sudo docker exec -it mymysql bash
连接到 MySQL
mysql -u root -p
输入密码,然后创建数据库CREATE DATABASE test_db;
使用SHOW DATABASES;就能查看到刚刚创建的数据库了
退出 MySQL 和容器
exit
exit
删除容器
sudo docker stop mymysql
sudo docker rm mymysql
1,这时,容器和它内部的临时数据都被删除了,但你挂载的数据卷 (mysql_data) 依然存在。
2,用同样的数据卷重建容器:再次运行第二步的 docker run 命令。新的容器会自动加载之前的数据卷。
3,验证数据是否存在:
sudo docker run -d --name mymysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-v mysql_data:/var/lib/mysql \
--restart always \
mysql:8.0
sudo docker pssudo docker exec -it mymysql bash
# 在容器内部,再次尝试连接
mysql -u root -p