谷粒商城学习-10-docker安装mysql

文章目录

  • 一,拉取MySQL镜像
    • 1,搜索MySQL的Docker镜像
    • 2,拉取MySQL镜像
    • 3,查看已经拉取的镜像
  • 二,创建、启动MySQL容器
    • 1,使用docker run创建启动容器
    • 2,使用docker ps查看运行状态的容器
    • 3,验证容器是否可用
      • 3.1 使用docker命令进入mysql命令行客户端
      • 3.2 使用可视化的连接工具Dbeaver
    • 4,修改MySQL配置文件
  • 三,目录挂载和端口映射
    • 1,目录挂载 (Volume Mounting)
      • 原理
      • 作用
      • 示例
    • 2,端口映射 (Port Mapping)
      • 原理
      • 作用
      • 示例

本节主要是讲解如何用Docker安装MySQL,解释容器的基本知识,包括下载镜像、创建容器、启动容器、端口映射、目录挂载、进入容器等等。

一,拉取MySQL镜像

1,搜索MySQL的Docker镜像

下载镜像前可以先查询镜像仓库有哪些镜像,执行如下命令查询MySQL镜像。

docker search mysql

在这里插入图片描述
当然去Docker Hub搜索能看到更详细的信息。

2,拉取MySQL镜像

docker pull mysql:5.7

如上命令表示把标签为5.7的MySQL镜像拉取到本地。

  • docker pull 表示从镜像仓库拉取镜像
  • mysql:5.7 表示标签为5.7的mysql镜像,不同机构组织个人都可能上传mysql镜像,Docker Hub通过标签进行区分,如果不加标签,默认下载最新版本

3,查看已经拉取的镜像

docker images

在这里插入图片描述

二,创建、启动MySQL容器

1,使用docker run创建启动容器

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
  • –name 给容器取的名称,便于区分容器
  • -d 表示以守护进程(daemon)模式运行容器,不影响当前shell窗口的操作

2,使用docker ps查看运行状态的容器

docker ps

可以看到一个名为mysql的容器正在运行。
在这里插入图片描述

3,验证容器是否可用

3.1 使用docker命令进入mysql命令行客户端

docker exec -it mysql mysql -uroot -proot

如下,可以连接到mysql的命令行工具,执行查询数据库的命令。
在这里插入图片描述

3.2 使用可视化的连接工具Dbeaver

在这里插入图片描述

4,修改MySQL配置文件

创建MySQL容器时,使用的是MySQL的默认配置,可以按需做一些更改,这里主要是改默认的字符配置信息。

创建一个my.cnf的mysql配置文件,因为已经把宿主机的目录和容器的目录做了映射,所以可以直接在宿主机修改配置文件,MySQL容器重启时会读这个目录下的配置。

vi /mydata/mysql/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

注意:解决MySQL连接慢的问题,可以在配置文件中加入如下,并重启 mysql。

[mysqld]
skip-name-resolve

重启mysql容器

docker restart mysql

三,目录挂载和端口映射

在上一步创建Docker容器的命令中使用两个常用的参数:

  • -v 目录挂载
  • -p 端口映射

下面详细介绍下这两个参数,在我们创建Docker容器中常常使用这两个参数。

Docker 容器的目录挂载和端口映射是两种非常重要的特性,它们允许容器与宿主机之间进行数据和网络的交互。下面是这两种特性的原理和作用的详细解释,以及具体的示例。

1,目录挂载 (Volume Mounting)

原理

目录挂载允许宿主机文件系统中的目录被“挂载”到容器内。这意味着容器可以读写宿主机上的文件,反之亦然。挂载的目录在容器内部表现为普通的本地文件系统路径,但实际上它指向的是宿主机上的实际目录。

作用

  1. 数据持久化:即使容器被删除,挂载的数据仍然保留在宿主机上。
  2. 数据共享:多个容器可以挂载同一个目录,从而共享数据。
  3. 配置管理:可以将敏感的配置文件从宿主机挂载到容器,避免硬编码在镜像中。

示例

假设你有一个 MySQL 数据库容器,你希望数据存储在宿主机上以确保数据持久化。你可以使用如下命令:

docker run -d \
    --name mysql-container \
    -v /path/to/local/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw \
    mysql:latest

在这个例子中,-v /path/to/local/data:/var/lib/mysql 表示宿主机上的 /path/to/local/data 目录被挂载到了容器内的 /var/lib/mysql 目录。这样,所有容器内的数据库文件都将保存在宿主机的指定目录中。

2,端口映射 (Port Mapping)

原理

端口映射允许容器内的网络端口与宿主机上的端口进行关联。这意味着外部网络可以通过宿主机的特定端口访问容器内的服务。Docker 在容器启动时创建这种映射关系。

作用

  1. 服务暴露:使容器内的服务可从外部网络访问。
  2. 端口重定向:可以将容器的多个端口映射到宿主机的不同端口,解决端口冲突。
  3. 网络隔离:通过选择性地暴露端口,增加网络安全性。

示例

假设你运行了一个 web 服务器容器,它监听在容器内部的 80 端口,但你想通过宿主机的 8080 端口访问它。你可以使用以下命令:

docker run -d \
    --name web-server \
    -p 8080:80 \
    nginx:latest

在这个例子中,-p 8080:80 表示宿主机上的 8080 端口被映射到容器内的 80 端口。因此,任何对宿主机 8080 端口的请求都会被转发到容器内的 web 服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/774241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

属性描述符初探——Vue实现数据劫持的基础

目录 属性描述符——Vue实现数据劫持的基础 一、属性描述符是什么? ​编辑 1.1、属性描述符示例 1.2、用属性描述符定义属性及获取对象的属性描述符 1.3、带有读取器和设置器的属性描述符 二、使用属性描述符的情景 2.1、封装和数据隐藏 使用getter和setter…

论文写作全攻略:Kimi辅助下的高效学术写作技巧

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 完成论文写作是一个多阶段的过程,涉及到不同的任务和技能。以下是按不同分类总结的向Kimi提问的prompt,以帮助你在论文写作过程中取得成功: 1. 选题与…

使用kali Linux启动盘轻松破解Windows电脑密码

破解分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。谢谢!! 效果展示: 使用kali Linux可以轻松破解Windows用户及密码 准备阶段: &#xff08…

RedHat9 | kickstart无人值守批量安装

一、知识补充 kickstart Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。 kickstart的工作原理 Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,…

配置基于用户认证的虚拟主机

添加账号abc [rootlocalhost conf.d]# htpasswd -c /etc/httpd/zhanghao abc New password: Re-type new password: Adding password for user abc添加账号tom [rootlocalhost conf.d]# htpasswd /etc/httpd/zhanghao tom New password: Re-type new password: Adding pa…

QT中QDomDocument读写XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

平安养老险蚌埠中心支公司开展“78奋力前行”健步走活动

7月4日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;蚌埠中心支公司组织员工在张公山公园开展“78奋力前行”健步走活动&#xff0c;传递保险行业的正能量&#xff0c;展现平安养老险的活力与风采。 平安养老险蚌埠中心支公司员工身着…

【瑞吉外卖 | day02】登录功能完善+员工信息的增改查

文章目录 瑞吉外卖 — day021. 完善登录功能1.1 问题分析1.2 实现 2. 新增员工功能2.1 分析2.2 程序执行过程2.3 程序执行中的异常处理 3. 员工信息分页查询3.1 程序执行过程 4. 启用/禁用员工账号4.1 需求分析4.2 程序执行过程4.3 代码修复 5. 编辑员工信息5.1 需求分析5.2 程…

基于DMAIC降低气缸体水套芯磕碰伤率

在制造业的激烈竞争中&#xff0c;产品质量的提升一直是企业追求的目标。气缸体作为汽车发动机的核心部件&#xff0c;其生产过程中的质量控制尤为重要。今天&#xff0c;深圳天行健企业管理咨询公司就来分享一下如何运用DMAIC&#xff08;定义、测量、分析、改进、控制&#x…

Logstash安装插件失败的问题

Logstash安装插件失败的问题 安装 logstash-output-jdbc 失败 报错为&#xff1a; Unable to download data from https://rubygems.org - Net::OpenTimeout: Failed to open TCP connection to rubygems.org:443 (execution expired) (https://rubygems.org/latest_specs.4.…

[GHCTF 2024 新生赛]UP+——入土为安的第一天

注意&#xff1a;这道题需要脱壳&#xff0c;而且需要改特征值&#xff0c;详细请看 [LitCTF 2024]hello_upx——入土为安的第一天-CSDN博客 脱完壳发现有256这个特殊的数&#xff0c;是rc4类型的题&#xff0c;最后有一个异或 a "9F041CEFA92386B6F56F27B96155FD42&qu…

鸿蒙应用开发之Column容器

这个容器已经使用了很多次,但是还是需要来简单地学习一下,它的主要作用是沿垂直方向布局的容器。 对于布局这种容器,需要看到显示的效果才会比较明白。 先来看下面这个界面: 先在最外面建立一个Column容器,space和方框显示等显示内容都是作为一行进行排列。现在这里设置为…

智能升级,监控无界——全新安全生产生态算法一体机上线

安全生产生态算法一体机 安全生产生态算法一体机是万物纵横推出的一款AI算法软硬一体生态产品&#xff0c;重点面向安全生产领域&#xff0c;采用BM1684强劲AI芯片&#xff0c;内置安全生产场景所需的多种专用AI算法&#xff0c;面向各场景的人员监控、规范作业、异常检测等应…

maven项目启动的时候,自动启动netty

1.写一个监听器,重开一个线程初始化,netty,一定要重开一个线程去启动,要不会阻塞的 public class StartupListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {// 在Web应用启动时启动WebSocket服务器new Thread(…

2024 MWC上海:Infobip引领CPaaS新纪元

作为全球通信行业一年一度的顶级盛会&#xff0c;MWC上海2024于近日在上海盛大召开。Infobip以其前瞻性的CPaaS&#xff08;Communication Platform as a Service&#xff0c;通信平台即服务&#xff09;解决方案和广泛的合作伙伴网络&#xff0c;成为了众多参展嘉宾瞩目的焦点…

Leetcode.342 4的幂

给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 示例 1&#xff1a; 输入&#xff1a;n 16 输出&#xff1a;true示…

QT的编译过程(底层逻辑)

qmake -project 用于从源代码生成项目文件&#xff0c;qmake 用于从项目文件生成 Makefile&#xff0c;而 make 用于根据 Makefile 构建项目。 详细解释&#xff1a; qmake -project 这个命令用于从源代码目录生成一个初始的 Qt 项目文件&#xff08;.pro 文件&#xff09;。它…

通过营销本地化解锁全球市场

在一个日益互联的世界里&#xff0c;企业必须接触到全球各地的不同受众。营销本地化是打开这些全球市场的关键。它包括调整营销材料&#xff0c;使其与不同地区的文化和语言细微差别产生共鸣。以下是有效的营销本地化如何推动您的全球扩张&#xff0c;并用实际例子来说明每一点…

在PyTorch中使用TensorBoard

文章目录 在PyTorch中使用TensorBoard1.安装2.TensorBoard使用2.1创建SummaryWriter实例2.2利用add_scalar()记录metrics2.3关闭Writer2.4启动TensorBoard 3.本地连接服务器使用TensorBoard3.1方法一&#xff1a;使用SSH命令进行本地端口转发3.2方法二&#xff1a;启动TensorBo…

昇思25天学习打卡营第12天|ResNet50迁移学习

昇思25天学习打卡营第12天|ResNet50迁移学习 前言ResNet50迁移学习数据准备下载数据集 加载数据集数据集可视化 训练模型构建Resnet50网络固定特征进行训练训练和评估可视化模型预测 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型…