余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

CentOS8使用Docker安装MySQL权威指南

xiyangw 2023-05-14 11:14 77 浏览 0 评论

本文从安装Docker和使用Docker安装MySQL两个方面进行全方位的过程分析,跟着我一起来动手操作吧,希望可以帮到你。

安装环境

CentOS: 8.5.2111

Docker安装系统要求

CentOS 7,CentOS 8(stream) 或者CentOS 9(strem)

更换Yum源

如果你的yum install都是正常的,可以忽略此步骤。

如果你是新安装的CentOS 8虚拟机,这里需要去更换Yum源,否则yum install docker-ce 会报以下错误Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

使用以下命令来更改Yum源

sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

yum update -y

等待更新完成即可。基础环境准备完毕,我们先来安装Docker。

Docker安装

准备工作做好了以后,Docker的安装非常简单。

添加Docker仓库源

# yum-utils提供下一步要用到的yum-config-manager工具
sudo yum install -y yum-utils

# 添加Docker的仓库源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker

在安装之前,为防止系统因为之前可能有安装过Docker而引发不必要的麻烦,我们可以使用以下命令进行清理

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

安装最新版本的Docker

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

如果你想安装指定版本的Docker,可以使用下面的命令查看可用的版本列表:

yum list docker-ce --showduplicates | sort -r

你会看到很多版本,下面只是截取了最新的三个版本

docker-ce.x86_64                3:20.10.9-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.8-3.el8                 docker-ce-stable
docker-ce.x86_64                3:20.10.7-3.el8                 docker-ce-stable
...

我们拿第一条数据来举例,它的完整版本号是3:20.10.9-3.el8,但是我们在安装命令中指定版本时要截取':'和'-'之间的内容:20.10.9

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

不出错安装好了之后,Docker并没有启动,我们去启动它。

启动Docker

sudo systemctl start docker

启动好了,我们来跑个helle-world

sudo docker run hello-world

MySQL安装

快速安装

如需了解传统的MySQL安装过程,可以查看我的另一篇文章:CentOS8安装MySQL8详细教程,爬坑必备_BruceLuX的博客-CSDN博客。这里我们是要使用Docker来安装MySQL,来一起看看吧!

我们先来个极简版本的安装方式

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

本地没有mysql的镜像,Docker会自动去镜像服务器中拉取

mysql的一键安装就完成了,我们使用docker ps来查看运行中容器

docker ps

我们用3306端口去映射容器的3306端口,下面我们使用DataGrip或者Navicat来通过这个端口连接测试下,测试之前确保防火墙已关闭或者3306端口已开放,可以使用以下命令去设置

# 关闭防火墙
systemctl stop firewalld
# 开放33060端口号
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload

数据库配置信息

Host: 你的服务器IP

Port: 3306

User: root

Password: 123456(启动脚本中使用MYSQL_ROOT_PASSWORD设置的)

至此,MySQL数据库完全可以正常使用了。但是现在高兴还为时过早了,因为这里存在着数据安全隐患,如果你哪位不懂事的同事使用docker rm命令一不小心将容器删除了,而里面又是一些公司比较重要的数据,那就真的要删库跑路了……数据只存放在容器中,风险还是太大了,那要怎么做呢?

挂载容器数据卷

我们要将MySQL中宝贵的数据实时地备份到宿主机中,这样即使不小心删除了容器,我们还可以轻松地进行数据恢复。挂载容器数据卷就可以帮我们解决这个问题!比如我们想把MySQL的数据备份到宿主机的/app/mysql/data/目录下,使用-v命令来实现

docker run -d --name mysql_container -v /app/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

这样就将容器内的/var/lib/mysql目录与宿主机的/app/mysql/data建立了关联,容器内的数据会自动实时地备份到宿主机了。

我们也可以使用自定义的MySQL配置文件

docker run -d --name mysql_container -v /app/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql

更多配置

为了更高效地使用Docker+MySQL,我们还需要进行一些额外的配置。

Docker开机自启动

重启服务器后Docker自动启动

# 开启
systemctl enable docker.service
# 关闭
systemctl disable docker.service

容器自启动

Docker自动启动后,我们还想自动启动我们的MySQL容器,这样就不需要额外手动操作就可以正常使用数据库服务了。

我们可以在第一次创建容器并运行的时候加上--restart=always

docker run -d --name mysql_container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart=always mysql

对于已经创建运行的容器,可以通过以下方式来补加(mysql_container为容器的名称,启动脚本中--name后定义的,这里也可以使用容器ID)

docker update --restart=always mysql_container

日志监控

MySQL容器如果出问题了,我们可以通过以下方式来查看日志并分析

docker logs -f mysql_container

有问题可以在评论区交流下,欢迎点赞关注收藏。

相关推荐

“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意...

面试官问:三次握手与四次挥手是怎么完成的?

作者|饶全成来源|码农桃花源记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有...

三次握手和四次挥手的高阶面试题,建议收藏

昨天村长的讲解,真是一语点醒,这样的解释胜过死记硬背。但对于学习者,如果不能有直观感受,可能还是觉得不接地气,今天介绍两个工具,一个是网络抓包工具Wireshark,一个是linux命令tcpdum...

三次握手和四次挥手到底是个什么鬼东西

之前总有是有面试官喜欢问,你知道什么是三次握手么?什么是四次挥手么?为什么握手需要三次,挥手需要四次呢?今天我们就来详细的聊一下这个。1.什么是TCPTCP协议,简单称呼一下的话,那就是传输控制协议,...

加深理解TCP的三次握手与四次挥手

在了解三次握手和四次挥手之前,先要知道TCP报文内部包含了那些东西。熟悉了解TCP报文对日后学习网络和排除方面有很大的帮助,所以,今天为了加深对三次握手的理解,从新去认识TCP报文格式。TCP报文格式...

三次握手 与 四次挥手_三次握手四次挥手大白话

三次握手:①首先Client端发送连接请求报文②Server段接受连接后回复ACK报文,并为这次连接分配资源。③Client端接收到ACK报文后也向Server段发生ACK报文...

动画讲解TCP的3次握手,4次挥手,让你一次看明白

专注于Java领域优质技术,欢迎关注作者:老钱占小狼博客TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试...

linux下实现免密传输文件或登录到其他服务器

使用scp传输文件到其他服务器的时候,提示需要输密码,如下:[root@18csetup]#scpLINUX.X64_180000_db_home.zip192.168.133.120:/u0...

Linux如何通过salt免密SCP传输上百台机的脚本?看chatGPT的回答

如何通过salt免密SCP传输上百台机的shell脚本”,下面是chatGPT给出的结果。scp批量免密脚本给出的详细shell脚本如下:#!/bin/bash#源文件路径和目标路径SRC_...

Linux/Mac scp命令上传文件_将hdfs上的文件下载到本地的命令是

语法scp[可选参数]file_sourcefile_target参数说明:-1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令只使用IPv4寻...

Linux常用功能——文件远程传输_linux 远程传输文件

scp是securecopy的简写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,用于在Linux下进行远程拷贝文件的命令。和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器...

使用 scp 命令定时拉取服务器备份文件

我们的服务器,每周五必须要做下备份,但总是忘记执行备份这件事情,或者是服务器备份做了,但没有做异地备份。所以通过定时任务自动备份,备份成功之后,在其它服务器上面通过定时任务scp命令自动拉取备份文...

windows下最轻便的FTP/SCP文件管理器

这次推荐的工具叫做winscp,这个工具如果是IT从业人员,又是做服务端相关工作的话,可能无人不知,如果是刚入门,推荐立马上手试试。如果看了觉得有用,欢迎收藏、点赞、关注。官方网站:https://w...

我不是网管 - Linux中使用SCP命令安全复制文件

SCP是linux发行版中的命令行工具,用于通过网络安全地跨系统复制文件和目录。SCP代表安全复制,因为它使用ssh协议复制文件。拷贝时,scp命令建立ssh连接到远程系统。换句话说...

WinSCP软件双系统(Win-Linux)文件传输教程

WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较...

取消回复欢迎 发表评论: