Centos8安装docker,使用docker安装MYSQL,并挂载配置文件

系统环境:Centos8.0

默认运行docker最新版mysql镜像

一、安装docker

1.卸载旧版本及其相关依赖

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

注意:若是曾经安装过docker,之前存储在/var/lib/docker下的images、containers、volumes以及networks等资源并不会被连带删除(其实也没有删除的必要)

2.安装docker

推荐使用设置rpm仓库的方式进行安装,这种方式更为简便。当然也可以使用下载RPM包的形式或者安装脚本的形式进行安装。本文使用的是设置docker的rpm仓库链接,直接进行命令行安装。

2.1设置软件包管理器下载仓库地址

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置为阿里云国内镜像源——下载速度更快
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包管理器缓存
yum makecache

 2.2安装最新版docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

当然也可以安装指定版本,参见官方文档(见下方参考链接-1)

2.3启动docker

#设置开机自启动
systemctl enable docker
#启动docker
systemctl start docker
#查看docker服务状态
systemctl status docker

状态如下,说明安装成功

3.配置镜像加速

使用阿里云提供的免费私人镜像加速

开通阿里云账号之后进入ACR服务【可在搜索栏搜索ACR,下方会显示容器景象服务,见下图】

点击进入之后选择镜像工具中的镜像加速器,选择centos操作文档,按照相关步骤进行操作。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["换成你自己的加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

注意:根据Docker公司政策,2020年11月01日起将逐步向Docker Hub匿名和免费用户实施速率和拉取请求次数限制。但是一般我们个人使用没有什么影响。

至此,docker的安装与基本配置就完成了

4.docker的卸载

systemctl stop docker
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

二、Docker安装MYSQL

1.拉取mysql镜像

docker pull mysql

 因为我本地已经拉取过mysql镜像,所以其显示更新到最新版

2.docker 运行mysql镜像

运行容器的命令如下:

# -p表示端口映射 -e做一些环境变量的设置
docker run -d  \
 --name mysql \
 -p 3306:3306  \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=123456 \
 mysql

 这样便成功跑起来mysql数据库容器。

但是这有一个很大的弊端,就是我们无法轻易修改容器内部的mysql配置文件,若是后期想要配置其中的配置信息,进入容器内部修改是极为麻烦的。因为docker容器中只包含其运行所必需的系统命令,是一个最小化的模拟系统 。很多缺失的命令我们无法使用(比如vim),要用只能在容器中进行安装,很是麻烦。所以我们需要将mysql的配置文件挂载到宿主机上进行操作。 

3.挂载必要的文件或者是目录

主要是以下三种目录的挂载

mysql中的目录宿主机的目录作用
/etc/mysql/conf.d/root/mysql/conf主要将mysql的配置文件挂载到宿主机,便于操作自定义配置文件
/var/lib/mysql/root/mysql/data将mysql的数据文件挂载到宿主机指定位置。不挂载docker也会通过数据卷挂载至宿主机,但是其挂载的目录便不方便查找查看
/docker-entrypoint-initdb.d/root/mysql/init将mysql初始化目录挂载至宿主机。当容器第一次启动的时候,将运行其下的.sh , .sql , .sql.gz等文件,这可用于进行大量数据库迁移时使用,能将所有数据库sql脚本一并运行,无需一个个导入。当然,这个方法一定要确保sql文件没有错误,不然mysql容器将无法初始化成功。同时,这个只能是run命令第一次启动有效。stop容器再start,新添入的sql是不会被执行的。

3.1在宿主机创建相应目录

mkdir -p /root/mysql/data /root/mysql/init /root/mysql/conf

 

3.2可做一些提前设置

  • 将自定义的配置文件my.cnf放置/root/mysql/conf目录下
  • 将待迁移的数据库脚本放置在/root/mysql/init目录下

本文自定义my.cnf进行字符集的基础配置,作为演示,内容如下

[client]
default_character_set=utf8mb4

[mysql]
default_character_set=utf8mb4

[mysqld]
init_connect='SET NAMES utf8mb4'
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci

 将my.cnf放置在/root/mysql/conf目录下

本文无需迁移其他数据库,仍以一个hello.sql作为演示,将其放置/root/mysql/init目录下

3.3删除之前的mysql容器

docker rm -f mysql

3.4 运行docker命令,重新启动一个容器

# -p表示端口映射 -v表示数据卷的挂载 -e做一些环境变量的设置
docker run -d  \
 --name mysql \
 -p 3306:3306  \
 -v /root/mysql/data:/var/lib/mysql \
 -v /root/mysql/init:/docker-entrypoint-initdb.d \
 -v /root/mysql/conf:/etc/mysql/conf.d \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=123456 \
 mysql

 运行

docker ps -a #查看所有docker容器

说明mysql容器正常运行了。

我们可以查看当前/root/mysql/data挂载目录下的内容,可以发现大量文件,同时包含hello文件夹,说明文件挂载成功,并且hello.sql已经成功导入数据库。

我们也可以使用navicat可视化连接查看,结果如下:

至此整个docker运行mysql就大功告成了。

我们可以通过以下命令查看mysql的运行日志

#logs后跟容器名称
docker logs mysql

参考文档:

1.https://docs.docker.com/engine/install/centos/

2.https://hub.docker.com/_/mysql

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新停浊酒杯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值