docker安装mariadb并在本地持久化数据方式

 更新时间:2025年06月08日 15:44:55   作者:Asimov__  
这篇文章主要介绍了docker安装mariadb并数据持久化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

安装mariadb

查找hub仓库的mariadb镜像

 docker  search  mariadb
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mariadb                                MariaDB is a community-developed fork of MyS…   3374                [OK]                
linuxserver/mariadb                    A Mariadb container, brought to you by Linux…   124                                     

拉一个最新的mariadb镜像

docker  pull  mariadb
latest: Pulling from library/mariadb
5bed26d33875: Pull complete 
f11b29a9c730: Pull complete 

docker images

 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mariadb             latest              37f5f0a258bf        3 weeks ago         356MB
centos              7                   5e35e350aded        5 months ago        203MB
django              latest              eb40dcf64078        3 years ago         436MB

数据持久化的方法

一:docker数据卷容器

创建一个名为myblogdb数据卷(volume Manage volumes)

docker  volume  create   myblogdb

查看myblogdb数据卷信息

docker  volume  inspect  myblogdb
[
    {
        "CreatedAt": "2020-04-17T11:47:53+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/myblogdb/_data",
        "Name": "myblogdb",
        "Options": {},
        "Scope": "local"
    }
]

查看所有数据卷信息

[root@asimov ~]# docker  volume ls
DRIVER              VOLUME NAME
local               myblogdb

删除数据卷

docker volume rm 数据卷名

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。

如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令

清除无主的数据卷

docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
myblogdb

启动一个挂载数据卷的容器

[root@asimov ~]# docker  run  -d -P  --mount  source=myblog,target=/opt   --name mysql_volume  mariadb
  • --mount : 挂载目录(或-v:目录不存在时会自动创建目录) 
  • source=:创建的数据卷名(myblog),或本地目录 
  • target=:挂载到容器中的目录

查看mysql_volume容器

docker  inspect   mysql_volume
"Mounts": [
            {
                "Type": "volume",
                "Name": "myblog",   #数据卷名
                "Source": "/var/lib/docker/volumes/myblog/_data",   # 本地目录
                "Destination": "/opt", # 挂载到容器中的目录
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],

删除容器同时移除数据卷

[root@asimov ~]# docker rm -v  mysql_volume
mysql_volume

二:挂载一个本地主机文件作为数据卷 

创建mariadb容器并持久化到本地

[root@asimov data]# pwd
/root/docker_data/mysql/data
[root@asimov data]# docker  run  -d -p 3306:3306  -v /root/docker_data/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD="asimov" --name mysqlblog  mariadb
7b962746a9407faefe40f0f3744c81a0d3b1e301adcc69f561e41a33785d4329
  • -d:后台运行 
  • -p 3306:3306 :将内部的3306端口映射到外部的3306 
  • -v /root/docker_data/mysql/data:/var/lib/mysql :将内部数据库挂载到外部 
  • -e MYSQL_ROOT_PASSWORD=yourpasswd :设置root用户密码 
  • --name mysqlblog :容器名 
  • mariadb :镜像

指定mysql的配置文件

通过-v将本地的配置文件映射到docker内部的mysql(/etc/mysql/my.cnf)

查看容器

[root@asimov data]# docker  ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7b962746a940        mariadb             "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes       0.0.0.0:3306->3306/tcp   mysqlblog
61c1a2f92913        centos:7            "/bin/bash"              46 hours ago        Up 28 hours         0.0.0.0:3333->8080/tcp   blog

进入容器

[root@asimov ~]# docker exec -it mysqlblog /bin/bash

进入数据库

root@7b962746a940:~# mysql  -uroot  -p  passwd
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.4.12-MariaDB-1:10.4.12+maria~bionic mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

创建数据库

MariaDB [(none)]> show  databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.002 sec)

MariaDB [(none)]> create  database  asimov  default  charset  'utf8';
Query OK, 1 row affected (0.000 sec)

退出容器,查看本地挂载的目录

[root@asimov data]# pwd
/root/docker_data/mysql/data
[root@asimov data]# ls
aria_log.00000001  aria_log_control  asimov  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  ibtmp1  multi-master.info  mysql  performance_schema
[root@asimov data]# cd  asimov/
[root@asimov asimov]# ls
db.opt

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker之如何搭建VXXXN

    docker之如何搭建VXXXN

    文章介绍了如何快速搭建IPsec-vvv-server并配置以启动和运行,首先在服务器上执行相关命令,然后查看运行情况并配置安全组开放指定端口,测试使用Win10系统自带的VXXXN应用连接失败,但手机连接成功,文章提供了一定的配置指导,并鼓励大家参考和支持
    2025-01-01
  • 使用Maven打包构建Docker镜像并推送到仓库

    使用Maven打包构建Docker镜像并推送到仓库

    这篇文章主要介绍了使用Maven打包构建Docker镜像并推送到仓库问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • kali安装docker和portainer的配置方法

    kali安装docker和portainer的配置方法

    docker的出现给很多服务提供了方便,许多arm结构的硬件也能运行x86服务,今天给大家介绍kali安装docker和portainer的配置方法,感兴趣的朋友一起看看吧
    2021-06-06
  • 基于Docker快速搭建ELK的方法

    基于Docker快速搭建ELK的方法

    这篇文章主要介绍了基于Docker快速搭建ELK的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用Docker进行node开发时实现热加载功能

    使用Docker进行node开发时实现热加载功能

    这篇文章主要介绍了使用docker进行vue、react或者node开发时实现热加载功能,即宿主机文件修改之后实时刷新或者实时重启服务,文中通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-09-09
  • Docker四种网络模式演示及连通性测试

    Docker四种网络模式演示及连通性测试

    这篇文章主要为大家介绍了Docker四种网络模式演示及连通性测试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Docker使用nodejs镜像构建express服务的方法

    Docker使用nodejs镜像构建express服务的方法

    这篇文章主要介绍了Docker使用nodejs镜像构建express服务,主要包括nodejs容器的启动,安装nodejs第三方依赖模块及启动nodejs服务的相关操作,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Docker部署Go项目发布镜像到仓库

    Docker部署Go项目发布镜像到仓库

    这篇文章主要为大家介绍了Docker部署Go项目发布镜像到仓库示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 基于 Docker 搭建 Anythingllm的详细过程

    基于 Docker 搭建 Anythingllm的详细过程

    本文详细介绍了如何在本地Windows 11企业版上使用Docker搭建和部署Anythingllm,包括Ollama和Docker的安装步骤,以及配置和使用Anythinllm的具体方法,感兴趣的朋友一起看看吧
    2025-03-03
  • 解决docker指定udp端口号的问题

    解决docker指定udp端口号的问题

    这篇文章主要介绍了解决docker指定udp端口号的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论