docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker安装mariadb并在本地持久化数据

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

作者: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

查看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

指定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

总结

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

您可能感兴趣的文章:
阅读全文