[Docker精进篇] Docker部署和实践 (二)
前言:
Docker部署是通过使用Docker容器技术,将应用程序及其所有相关依赖项打包为一个可移植、自包含的镜像,然后在任何支持Docker的环境中快速部署和运行应用程序的过程。

文章目录
- Docker部署
- 1️⃣为什么需要?
- 2️⃣有什么作用?
- 3️⃣docker部署(以mysql和redis为例)
- 部署mysql和映射
- 部署redis和映射
- 4️⃣总结
这篇文章是我的笔记,旨在带您快速入门上手docker,更加深入学习docker知识
Docker部署
做事三件套:是什么,为什么,怎么办 我们一步一步来看,哈哈
Docker部署是指利用Docker容器技术将应用程序及其依赖项打包成一个可移植、自包含的镜像,并在不同的环境中进行快速部署和运行的过程。

1️⃣为什么需要?
-
环境一致性:传统部署中,应用程序在不同环境中可能遇到依赖不一致、配置不一致等问题。而使用Docker部署,可以将所有依赖项打包到镜像中,保证了应用程序在不同环境中的一致性。
-
快速部署和扩展:Docker容器可以在几秒钟内快速部署和启动,使得应用程序的部署过程变得更加简单和高效。此外,可以根据负载需求,快速地进行水平扩展,以提供更好的性能和可伸缩性。
-
资源利用率:Docker容器利用了宿主机的资源管理功能,可以更高效地利用系统资源。容器可以在隔离的环境中运行,并共享宿主机的资源,最大限度地提高资源利用率。
-
隔离性和安全性:Docker容器提供了隔离的运行环境,使得应用程序与宿主机和其他容器相互隔离。这种隔离性增强了应用程序的安全性,不同容器之间相互独立,互不干扰。
-
快速开发和部署:通过使用Docker容器,可以在本地开发环境中构建和测试应用程序,并且可以使用相同的容器镜像将应用程序轻松部署到其他环境,既可以加快开发迭代周期,又减少开发与运维之间的协调与沟通成本。
2️⃣有什么作用?
看完了为什么需要使用docker,再来简单了解一下在docker部署能带来的优点吧。
反正就是docker要用起来,哈哈哈
Docker部署的作用:
-
简化交付流程:Docker部署可以将应用程序及其依赖项打包成一个可移植的镜像,简化了应用程序的交付和部署过程。
-
提高可移植性:Docker容器可以在不同的平台和环境中运行,提供了高度的可移植性。这意味着可以将应用程序轻松地部署到各种云平台、物理机或虚拟机中。
-
提供一致的运行环境:通过Docker部署,可以确保应用程序在不同环境中以相同的方式运行,减少了因环境差异引起的问题。
-
提高开发和运维效率:Docker提供了一种标准化的部署方式,简化了开发与运维团队之间的协作。开发人员可以在容器中构建和测试应用程序,而运维人员可以使用相同的容器镜像进行部署和维护,从而提高了开发和运维效率。
3️⃣docker部署(以mysql和redis为例)
其实docker部署非常简单,你只要花费极少的时间去真正学会使用,你会发现是真的方便呀。
docker部署分为win和linux上的,我这里linux上的,道理都差不多,哈哈
部署mysql和映射

- 拉取镜像
docker pull mysql:5.7(可以替换为你需要的版本)
- 创建镜像容器
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v /mnt/docker/mysql/conf:/etc/mysql/conf.d \
-v /mnt/docker/mysql/logs:/logs \
-v /mnt/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
大家看着这一串别害怕,我来详细讲解一下:
这段代码是根据mysql:5.7 版本镜像进行容器构建,容器名字是mysql,同时设置了容器的root用户密码是root,以及挂在了三个数据卷。同时设置虚拟机3307端口和容器3306端口映射,即本地连接虚拟机3307接口即可完成mysql配置,你构建之后还会发现并没有进去容器内部,因为-d 是开启守护容器进行,默认开启不进入
其中的 -v 后端跟的参数是 设置数据卷,
docker run -di -v /宿主机目录:/容器目录
设置数据卷,进行数据的双向绑定,如果虚拟机数据丢失本地还有,同时修改本机数据,虚拟机那边的数据也会改变
- 进入容器
docker exec -it mysql(这个是你的容器名,上面是mysql)
- 开启mysql
进入容器后,输入命令开启mysql
service start mysql 如果你的容器没开启mysql服务,需要开一下
mysql -uroot -p
密码是root
即可完虚拟机中的配置。
- 本地映射端口号

部署redis和映射
上面我们配置完了mysql,接下来部署redis

- 拉取镜像
ocker pull redis(可以替换为你需要的版本)
- 创建镜像容器
docker run -di --name redis -p 6379:6379 redis
这段代码是根据最新版redis 进行容器构建,容器名字是redis,同时端口映射,虚拟机6379:容器6379,你构建之后还会发现并没有进去容器内部,因为-d 是开启守护容器进行,默认开启不进入
- 进入容器
docker exec -it redis(这个是你的容器名,上面是mysql)
- 开启redis
进入容器后,输入命令开启redis
redis-server
即可完虚拟机中的配置。
- 本地映射端口号

4️⃣总结

Docker部署提供了一种可靠、高效、一致和可移植的方式来打包、部署和运行应用程序。它简化了应用程序的交付和部署流程,提高了部署的可靠性、可移植性和可维护性,同时提升了开发与运维团队的效率。
如果您在学习过程中有什么疑问或者不懂的地方,可以随时私信我,看到会及时回复!!
相关文章:
[Docker精进篇] Docker部署和实践 (二)
前言: Docker部署是通过使用Docker容器技术,将应用程序及其所有相关依赖项打包为一个可移植、自包含的镜像,然后在任何支持Docker的环境中快速部署和运行应用程序的过程。 文章目录 Docker部署1️⃣为什么需要?2️⃣有什么作用&am…...
day9 | 28. 实现 strStr()、459.重复的子字符串
目录: 解题及思路学习 28. 实现 strStr() https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下…...
hive on tez资源控制
sql insert overwrite table dwintdata.dw_f_da_enterprise2 select * from dwintdata.dw_f_da_enterprise; hdfs文件大小数量展示 注意这里文件数有17个 共计321M 最后是划分为了21个task 为什么会有21个task?不是128M 64M 或者说我这里小于128 每个文件一个map…...
企业有VR全景拍摄的需求吗?能带来哪些好处?
在传统图文和平面视频逐渐疲软的当下,企业商家如何做才能让远在千里之外的客户更深入、更直接的详细了解企业品牌和实力呢?千篇一律的纸质材料已经过时了,即使制作的再精美,大家也会审美疲劳;但是你让客户远隔千里&…...
【问题解决】Git命令行常见error及其解决方法
以下是我一段时间没有使用xshell,然后用git命令行遇到的一些系列错误和他们的解决方法 遇到了这个报错: fatal: Not a git repository (or any of the parent directories): .git 我查阅一些博客和资料,可以解决的方式: git in…...
【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用
目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM:SQLAlchemy使用 3.1 安装SQLAlchemy: 3.2 定义数据库模型类: 3.3 创建数据表: 3.4 插入数据: 3.5 查询数据: 3.6 更新数据: 3.7 删…...
CCLINK IE转MODBUS-TCP网关modbus tcp协议详解
你是否曾经遇到过需要同时处理CCLINK IE FIELD BASIC和MODBUS两种数据协议的情况?捷米的JM-CCLKIE-TCP网关可以帮助你解决这个问题。 捷米JM-CCLKIE-TCP网关可以分别从CCLINK IE FIELD BASIC一侧和MODBUS一侧读写数据,然后将数据存入各自的缓冲区。接着…...
vue2根据不同的电脑分辨率显示页面内容及不同设备适配显示
1.安装插件: npm install postcss-px2rem px2rem-loader --save npm i lib-flexible --save 2.创建flexible.js,并在main.js引用 ;(function(win, lib) {var doc = win.document;var docEl = doc.documentElement;var metaEl = doc.querySelector(meta[name="viewport&…...
概率论:多维随机变量及分布
多维随机变量及分布 X X X为随机变量, ∀ x ∈ R , P { X ≤ x } F ( x ) \forall x\in R,P\{X\le x\}F(x) ∀x∈R,P{X≤x}F(x) 设 F ( x ) F(x) F(x)为 X X X的分布函数,则 (1) 0 ≤ F ( x ) ≤ 1 0\le F(x)\le1 0≤F(x)≤1 &am…...
flutter-第三方组件
卡片折叠 stacked_card_carousel 扫一扫组件 qr_code_scanner 权限处理组件 permission_handler 生成二维码组件 pretty_qr_code 角标组件 badges 动画组件 animations app更新 app_installer 带缓存的图片组件 cached_network_image 密码输入框 collection 图片保存 image_g…...
迪瑞克斯拉算法
迪锐克斯拉算法 简单来说就是在有向图中,给定一个图中具体的出发点,从这个点出发能够到达的所有的点,每个点的最短距离是多少。到不了的点,距离则是正无穷。有向,无负权重,可以有环。 所以说,迪…...
数据结构:力扣OJ题(每日一练)
目录 题一:环形链表 思路一: 题二:复制带随机指针的链表 思路一: 本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵! 题一:环形链表 给定一个链表的头节点…...
【论文阅读】基于深度学习的时序预测——Informer
系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...
机器学习 | Python实现GBDT梯度提升树模型设计
机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型描述模型使用参考资料基本介绍 机器学习 | Python实现GBDT梯度提升树模型设计。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,GBDT也…...
elementUi表单恢复至初始状态并不触发表单验证
elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表,右侧是显示节点的详情,点击按钮应该就是新增一个规则的意思,表单内容是没有改变的,所以就把需要把表单恢复至初始状态并不触发表单…...
大模型相关知识
一. embedding 简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)…...
无法在 macOS Ventura 上启动 Multipass
异常信息 ➜ ~ sudo multipass authenticate Please enter passphrase: authenticate failed: Passphrase is not set. Please multipass set local.passphrase with a trusted client. ➜ ~ multipass set local.passphrase Please enter passphrase: Please re-enter…...
算法通关村第六关——原来如此简单
层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣102题:给你一个二叉树,请你返…...
企业权限管理(八)-登陆使用数据库认证
Spring Security 使用数据库认证 在 Spring Security 中如果想要使用数据进行认证操作,有很多种操作方式,这里我们介绍使用 UserDetails 、 UserDetailsService来完成操作。 UserDetails public interface UserDetails extends Serializable { Collecti…...
第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)
deque插入和删除 功能描述: 向deque容器中插入和删除数据 函数原型: 两端插入操作: push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
