安装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