使用 docker 安装 mariadb,并挂载本地目录到容器中

最近开始玩 docker,并尝试把自己常用的服务都用 docker 部署,这里记录一下我 使用 docker 安装 mariadb 的过程

文章转载自:使用 docker 安装 mysql,并挂载本地目录到容器中

拉取镜像

# 默认拉取最新的镜像
docker pull mariadb
# 查看镜像
docker images

提取 mariadb 配置数据

创建一个临时的 mariadb

docker run --rm \
--name mariadbTmp \
-it \
-v /home/arch/mariadb/:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456  \
mariadb \
/bin/bash

# 命令说明:
# 1. -v /home/arch/mariadb/:/var/lib/mysql  将主机目录//home/arch/mariadb/映射到Docker中的/var/lib/mysql目录
# 2. -- rm 退出后就删除该容器
# 3. -it 交互模式
# 4. /bin/bash 进入 bash 命令模式

复制出 docker 中的配置文件

复制 docker 容器中的配置到/var/lib/mysql 目录中,也就是/home/arch/mariadb 中,因为这两个目录已经作了映射

cp /etc/mysql/my.cnf /var/lib/mysql
cp -R /etc/mysql/conf.d/ /var/lib/mysql/
cp -R /etc/mysql/mariadb.conf.d/ /var/lib/mysql/
# 最后exit退出容器
exit
# 这之后可以根据自己的需求,导/home/arch/mariadb 目录中修改 mysql 配置

运行镜像

docker run \
--name mariadb \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-m 512M --memory-swap=1024M \
-v /home/arch/mariadb/data:/var/lib/mysql \
-v /home/arch/mariadb/my.cnf:/etc/mysql/my.cnf \
-v /home/arch/mariadb/conf.d:/etc/mysql/conf.d \
-v /home/arch/mariadb/mariadb.conf.d:/etc/mysql/mariadb.conf.d \
-d mariadb

# -v 挂载本地目录到docker中
# -d 表示以守护进程模式运行
# -m 限制容器可以使用的内存

进入运行着的 mariadb 容器

## 进入容器
# 这里可以使用上面定义的容器名 mariadb,也可已使用容器id
# docker ps 查看容器id
docker exec -it mariadb /bin/bash
## 下面就是在容器内部操作了
mysql -uroot -p
## 输入密码进入mariadb
mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | sys                |
  +--------------------+
  4 rows in set (0.00 sec)

mysql> exit

Q.E.D.