Docker2:docker快速入门(部署MySQL)

devtools/2024/11/24 19:33:39/

欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长! 

目录

一、部署MySQL

docker%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2MySQL-toc" style="margin-left:40px;">1、输入docker命令,一键部署MySQL

举例:

docker%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E3%80%81%E9%83%A8%E7%BD%B2MYSQL-toc" style="margin-left:120px;">①在linux控制台,输入上面的docker命令,一键安装、部署MYSQL

②使用navicat,连接刚才安装、部署好的mysql

2、镜像容器

①先声明一个观点:

②什么是镜像

镜像的强大之处

④什么是容器

3、镜像仓库

docker%E8%BF%90%E8%A1%8C%E7%9A%84%E6%B5%81%E7%A8%8B-toc" style="margin-left:40px;">4、docker运行的流程

二、命令解读

1、解读上述命令

docker%20run%20-d%EF%BC%9A%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%BF%90%E8%A1%8C%E8%AF%A5%E5%AE%B9%E5%99%A8%EF%BC%88%E8%BF%90%E8%A1%8C%E5%AE%B9%E5%99%A8%3D%E8%BF%90%E8%A1%8C%E5%AE%B9%E5%99%A8%E5%86%85%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%89%EF%BC%8C-d%E8%A1%A8%E7%A4%BA%E8%AE%A9%E5%AE%B9%E5%99%A8%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E3%80%82-toc" style="margin-left:80px;">①docker run -d:创建并运行该容器(运行容器=运行容器内的进程),-d表示让容器在后台运行。

②--name mysql:给容器起一个名字(名字必须唯一)叫mysql(叫啥都行,也可以叫mysql123),方便我们区分不同的容器

③-p 3306:3306:设置端口映射。将宿主机的端口3306,映射到容器的3306端口。

docker%E5%AE%98%E7%BD%91%E6%9F%A5%E7%9C%8B%E5%AF%B9%E5%BA%94%E9%95%9C%E5%83%8F%E9%9C%80%E8%A6%81%E5%93%AA%E4%BA%9B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F-toc" style="margin-left:80px;">④-e KEY=VALUE:是设置环境变量。具体设置哪些环境变量,由镜像的制作者提供。我们做的就是去docker官网查看对应镜像需要哪些环境变量

⑤mysql:指定所运行镜像的名字。比如我们想运行mysql,此处就写mysql;我们想运行nginx,此处就写nginx。

2、为什么要做宿主机—>容器端口映射 ?

举例:

3、总结


一、部署MySQL

docker%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2MySQL">1、输入docker命令,一键部署MySQL

        先停掉虚拟机中的MySQL,确保你的虚拟机已经安装了Docker,且网络开通的情况下,执行下面命令即可安装MySQL:

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql

举例:

docker%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E3%80%81%E9%83%A8%E7%BD%B2MYSQL" style="background-color:transparent;">①在linux控制台,输入上面的docker命令,一键安装、部署MYSQL
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql

        运行结果:

        注意:如果报错,可能是我们配置的docker镜像源失效了,我们换一个就行。

        举例:

# 创建目录
mkdir -p /etc/docker# 复制内容
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.sohu.com","https://ustc-edu-cn.mirror.aliyuncs.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.awsl9527.cn"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker
②使用navicat,连接刚才安装、部署好的mysql

        

        可见此时成功连接到了Linux上的数据库。 

2、镜像容器

①先声明一个观点:

        我们安装QQ时,安装完的最终结果,是得到了磁盘上关于QQ的一堆文件。

        举例:我们安装完QQ,会得到以下磁盘文件.

                那么此时我把这些文件打成压缩包发给你,你解压之后,就可以直接运行QQ。这就叫绿色免安装版。

②什么是镜像

        举例:Docker在安装MySQL时,就是从镜像仓库中,下载上述的那些磁盘文件,我们有了关于MySQL运行所需的磁盘文件,就可以直接运行MySQL。只不过在docker中,那些磁盘文件不叫磁盘文件,而是叫“镜像”。

        因此,镜像的定义:当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用所需的环境、配置、系统函数库。

        简单来说,镜像就是一个安装好的、配置好的、包含所需的环境、配置、系统函数库的一个包(绿色免安装的包,里面全是文件,下载后直接就能运行)。我们无需操心该软件的安装过程、所需的依赖、环境等,因为包里都有。

镜像的强大之处

        因为镜像不仅包含了应用本身所对应的文件,还包含了应用所需的环境、配置、系统函数库等。因此镜像能够忽略操作系统、环境的差异。根本原因就是,我使用docker安装该应用时,连同该应用所需的环境、配置、系统函数库也下载到了本地。

④什么是容器

        容器:Docker会在运行镜像时,创建一个隔离环境,这个隔离环境就称为“容器”。

        也就是说,你运行起来的东西,它和其他的进程是相互隔离、互不干扰的。

        举例:

         因此我们多次利用docker启动mysql,分别指定不同的端口,就搭建了一个mysql的集群。每一个mysql都处于一个独立的容器容器之间相互隔离、互不干扰。

3、镜像仓库

        镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:Docker Hub。

        我们在这个镜像仓库中,可以寻找到各种软件的镜像(绿色免安装版,拿来磁盘文件,直接就运行应用)。

        一般是软件的开发者,将自己软件的镜像放到镜像仓库中的。

        比如:我是一款游戏的开发者,我想让别人通过docker直接安装、部署我们的游戏,那么就可以将该游戏所对应的所有磁盘文件(磁盘文件就叫“镜像”),直接放到镜像仓库,这样别人就可以通过docker命令直接下载了。

docker%E8%BF%90%E8%A1%8C%E7%9A%84%E6%B5%81%E7%A8%8B">4、docker运行的流程

二、命令解读

1、解读上述命令

docker%20run%20-d%EF%BC%9A%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%BF%90%E8%A1%8C%E8%AF%A5%E5%AE%B9%E5%99%A8%EF%BC%88%E8%BF%90%E8%A1%8C%E5%AE%B9%E5%99%A8%3D%E8%BF%90%E8%A1%8C%E5%AE%B9%E5%99%A8%E5%86%85%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%89%EF%BC%8C-d%E8%A1%A8%E7%A4%BA%E8%AE%A9%E5%AE%B9%E5%99%A8%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E3%80%82">①docker run -d:创建并运行该容器(运行容器=运行容器内的进程),-d表示让容器在后台运行。

②--name mysql:给容器起一个名字(名字必须唯一)叫mysql(叫啥都行,也可以叫mysql123),方便我们区分不同的容器

③-p 3306:3306:设置端口映射。将宿主机的端口3306,映射到容器的3306端口。

docker%E5%AE%98%E7%BD%91%E6%9F%A5%E7%9C%8B%E5%AF%B9%E5%BA%94%E9%95%9C%E5%83%8F%E9%9C%80%E8%A6%81%E5%93%AA%E4%BA%9B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F">④-e KEY=VALUE:是设置环境变量。具体设置哪些环境变量,由镜像的制作者提供。我们做的就是去docker官网查看对应镜像需要哪些环境变量

        此处-e TZ=Asia/Shanghai \ 是设置时区为上海(东八区)。

               -e MYSQL_ROOT_PASSWORD=123\ 是设置账号为root,密码为123。

⑤mysql:指定所运行镜像的名字。比如我们想运行mysql,此处就写mysql;我们想运行nginx,此处就写nginx。

        注意:此时我们这个镜像名称不是完整的格式,完整的格式如下:

    

        如果不声明镜像的版本号,那么就采用最新版本。

2、为什么要做宿主机—>容器端口映射 ?

        因为docker容器有自己的空间,是对外隔离的,我们ping该容器的ip根本ping不通,更别说找到该容器的3306端口了。

        因此只能将该容器的3306端口,映射到Linux虚拟机的3306端口,此时我们找到linux虚拟机的3306端口,就相当于找到了docker容器的3306端口。

        注意:docker容器的端口,一般采用对应应用的默认端口。

        举例:如果docker的某个容器,运行的是Mysql应用,那么就占用该容器的3306端口,因为Mysql默认占用3306端口;同理,如果该容器运行的是nginx应用,那么就占用该容器的80端口,因为Nginx默认占用80端口。

举例:

        此时我们创建、运行一个容器,叫mysql2.0,该容器运行的是mysql,该进程占用容器的3306端口号(这是固定的,因为mysql默认占用3306端口),此时我们将该容器的3306端口,映射到linux虚拟机的3307端口,这样一来,我们只需要连接192.168.1.100(虚拟机的ip)的3307端口,就能使用该mysql。

        如下:

3、总结

以上就是docker 部署MySQL、命令解读的全部内容,想了解更多关于docker的知识,请关注本博主~~


http://www.ppmy.cn/devtools/136622.html

相关文章

C++四种类型转换操作符 static_cast、dynamic_cast、reinterpret_cast、const_cast介绍

前言 C风格的强制类型转换很简单&#xff0c;都可以使用Type b (Type)a形式转换。但这种方式存在一些缺点&#xff0c;比如信息丢失或精度损失&#xff0c;代码可读性的下降等。因此C提供了四种类型转换符来应对不同场合。分别是static_cast、dynamic_cast、reinterpret_cast…

linux通过手工删除文件卸载oracle 11g rac的具体步骤

在linux操作系统中&#xff0c;有些时候我们自己学习和测试会临时搭建的oracle rac。事情完成后&#xff0c;我们想回收资源&#xff0c;需要去卸载oracle rac。为了快速卸载oracle rac&#xff0c;今天我们介绍下如何通过手工删除文件的方式来完成工作&#xff08;操作都需要在…

(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在大学生在线计算机类专业考研学习网站管理的要求下&#xff0c;开发一…

从0-1逐步搭建一个前端脚手架工具并发布到npm

前言 本文介绍的案例已同步到github&#xff0c;github地址。 vue-cli 和 create-react-app 等 cli 脚手架工具用于快速搭建应用&#xff0c;无需手动配置复杂的构建环境。本文介绍如何使用 rollup 搭建一个脚手架工具。 脚手架工具的工作流程简言为&#xff1a;提供远端仓库…

《筑牢安全防线:培养 C++安全编程思维习惯之道》

在当今数字化飞速发展的时代&#xff0c;软件安全的重要性已提升到前所未有的高度。C作为一种广泛应用于系统开发、游戏制作、高性能计算等众多领域的编程语言&#xff0c;其程序的安全性更是关乎重大。培养 C安全编程的思维习惯&#xff0c;不仅是开发者个人能力提升的关键&am…

蓝桥杯每日真题 - 第21天

题目&#xff1a;(空间) 题目描述&#xff08;12届 C&C B组A题&#xff09; 解题思路&#xff1a; 转换单位&#xff1a; 内存总大小为 256MB&#xff0c;换算为字节&#xff1a; 25610241024268,435,456字节 计算每个整数占用空间&#xff1a; 每个 32 位整数占用…

使用ENSP实现NAT

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为12.12.12.1/30 ip address 12.12.12.1 30进入e0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置…

应急响应靶机——linux2

载入虚拟机&#xff0c;打开虚拟机&#xff1a; 居然是没有图形化界面的那种linux&#xff0c;账户密码&#xff1a;root/Inch957821.&#xff08;注意是大写的i还有英文字符的.&#xff09; 查看虚拟机IP&#xff0c;192.168.230.10是NAT模式下自动分配的 看起来不是特别舒服&…