SpringCloud微服务 【实用篇】| Docker启示录

目录

一:Docker启示录

1. Docker启示录

2. Docker和虚拟机的区别

3. Docker架构

4. Centos7安装Docker

4.1. 卸载

4.2. 安装docker

4.3. 启动docker

4.4. 配置镜像加速


前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,感兴趣的同学可以进行学习人工智能学习

一:Docker启示录

学习完前面的微服务,我们发现一个很麻烦的问题:那就是服务的部署,微服务很多,部署起来很麻烦!今天就学习一下Docker来解决一下这个微服务部署问题

1. Docker启示录

项目部署的问题

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题; 开发、测试、生产环境有差异!

各种微服务的前端部分依赖于Node、JS,服务端需要数据库MySQL,缓存系统Redis,异步通信MQ等。这些都需要部署到服务器上(Linux操作系统上);每个应用都需要依赖和函数库,但是每个应用的依赖和函数库又有所差异(依赖关系复杂就容易产生兼容)。搞定了开发环境,后面还有测试、生产环境(环境对应的操作系统环境还可能不同:Centos、Ubuntu

Docker怎么解决依赖的兼容问题?

既然每个应用都有自己的依赖和函数库,那么Docker就可以把应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包!并且将每个应用放到一个隔离容器去运行,避免互相干扰

Docker怎么解决不同环境的操作系统?

不同环境的操作系统不同(Linux和Ubuntu的本身函数库不同),Docker如何解决?我们先来了解下操作系统结构:

所有的Linux操作系统都可以分为两层:Linux内核(都是相同的)、系统应用(区别在于上层的应用不同)。内核负责与计算机的硬件进行沟通,提供操作硬件的指令 。系统应用封装内核指令为函数,便于程序员调用;用户程序基于系统函数库实现功能。程序调用函数库---》函数库调用内核指令---》指定调用计算机硬件,从而实现应用的执行。

Ubuntu和CentOS都是基于Linux内核,只是系统应用不同,提供的函数库有所差异;所以根据Ubuntu环境的打包程序,放到Centos上有可能运行不了!

Docker将用户程序与所需要调用的系统(比如Ubuntu和Centos)函数库一起打包。Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行

1. Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

①Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像;

②Docker应用运行在容器中,使用沙箱机制,相互隔离 ;

2. Docker如何解决开发、测试、生产环境有差异的问题

①Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行;

总结:Docker是一个快速交付应用、运行应用的技术

①可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统 ;

②运行时利用沙箱机制形成隔离容器,各个应用互不干扰 ;

③启动、移除都可以通过一行命令完成,方便快捷;

2. Docker和虚拟机的区别

Docker与虚拟机

Docker实现原理:Docker让一个应用在不同的Linux环境上运行是通过,会把应用及其依赖函数库,甚至于操作系统的函数库也一起打包。这样当应用运行时可以直接调用本地函数库,然后与操作系统的内核进行交互,这样就不需要关心什么样的系统,就可以实现跨系统的运行!(直接调用操作系统的内核,性能比较好

虚拟机实现原理:使用Hypervisor技术在一个操作系统上装另一个操作系统,模拟出计算机的各种的硬件,在模拟的计算机上就可以安装任意的操作系统,然后就可以安装应用、依赖等。在一个系统装另外一个系统,所以当应用执行时应用会以为自己在一个真是的电脑上运行:会去先调用内置的操作系统---》与Hypevisor交互---》把信息传给外部真实的操作系统----》外部操作系统再去调用计算机硬件。(层层传递,性能比较差

, 

两者的对比

 Docker和虚拟机的差异:

①docker是一个系统进程;虚拟机是在操作系统中的操作系统 ;

②docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般;

3. Docker架构

镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container)镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

对于MySQL就是一个镜像,里面含有很多文件组成了MySQL本身,所以可以说镜像就是硬盘中的文件MySQL跑起来的进程就是容器,只不过在Docker里面容器还要做隔离!对于容器不能把自己的东西写到镜像当中(造成镜像污染),可以基于容器创建全新的镜像,镜像都是只读的!对于一个容器怎么写数据呢?容器写数据可以拷贝一份文件到自己独立的容器当中

DockerHub(镜像共享)

 怎么把镜像共享给别人使用呢?这就需要DockerHub(镜像托管)和GitHub很像!

DockerHub:DockerHub是一个Docker镜像的托管平台;这样的平台称为Docker Registry(镜像服务器)。 国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。

程序员可以利用Docker提供的命令进行镜像的构建,例如:MySQL、Nginx镜像;然后把这些镜像上传到DockerHub服务器上(会公开比较危险);也可以搭建一个私有云。

Docker架构

怎么利用Docker完成镜像的构建和拉取、运行容器呢?这就需要了解Docker的架构了!

Docker是一个CS架构的程序,由两部分组成:

服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、构建容器等 ;

客户端(client):通过命令(本地)RestAPI请求(远程)向Docker服务端发送指令;可以在本地或远程向服务端发送指令

例如: 通过本地构建一个镜像,使用docker build命令,这个命令到达DockerServer以后会被守护进程docker daemon,利用提供的数据构建一个镜像!还可以去DockerRegister使用docker pull命令经过DockerServer端去拉取镜像!然后就可以运行镜像,创建容器,此时就需要docker run命令,它会告诉DockerServer的守护进程docker daemon去完成容器的创建;最终完成部署!

镜像: 将应用程序及其依赖、环境、配置打包在一起(可以看成系统文件);

容器:镜像运行起来就是容器,一个镜像可以运行多个容器(可以看成运行的进程);

总结Docker结构:

服务端:接收命令或远程请求,操作镜像或容器; 

客户端:发送命令或者请求到Docker服务端 ;

DockerHub:一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry;

4. Centos7安装Docker

企业部署一般都是采用Linux操作系统,而其中又数CentOS发行版占比最多,因此我们在CentOS下安装Docker。Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

注:Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10,CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

4.1. 卸载

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

注:反斜杠\ 表示命令的拼接!

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

4.2. 安装docker

首先需要大家虚拟机联网,安装yum工具 (下载工具)

yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken

然后更新本地镜像源(默认是连接国外的,容易断还慢)

# 设置docker镜像源为阿里云
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum makecache fast

安装docker社区版

yum install -y docker-ce

4.3. 启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!启动docker前,一定要关闭防火墙后!!

# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 查看防火墙的状态
systemctl status firewalld

通过命令启动docker

systemctl status docker  # 查看当前docker的状态
systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本(启动成功才可以查看到版本号)

docker -v

4.4. 配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务;参考阿里云的镜像加速文档:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器;在daemon.json中配置阿里云的镜像地址!

# 创建一个路径
sudo mkdir -p /etc/docker
# 把阿里云的地址追加到daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://6aqbcoj9.mirror.aliyuncs.com"]
}
EOF # 表示终止
# 重新加载上面的文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yaml 文件格式

yaml文件&#xff1a;是一种标记语言&#xff0c;以竖列形式展示序列化的时间格式&#xff0c;可读性高 类似于json格式。语法简单。 yaml通过缩进来表示数据结构&#xff0c;连续的项目用-减号来表示。 yaml文件使用的注意事项&#xff1a; 1&#xff0c;大小写敏感 2&am…

HT4125 低压CMOS 缓冲门器件 单电源电压转换

​​亿胜盈科HT4125 是一款低压CMOS 缓冲门器件&#xff0c;可运行在针对便携式和电池设备的更宽电压范围内。 其采用了较低阀值电路来设计此输入&#xff0c;以便匹配Vcc 3.3V 时的1.8V 输入逻辑&#xff0c;并且可被用 在1.8V 至3.3V 电平上行转换器功能中。此外&#xff0c;…

数据爬虫:获取申万一级行业数据

目录 1. 获取访问接口 2. 链接网址 3. 链接名单 免责声明&#xff1a;本文由作者参考相关资料&#xff0c;并结合自身实践和思考独立完成&#xff0c;对全文内容的准确性、完整性或可靠性不作任何保证。同时&#xff0c;文中提及的数据仅作为举例使用&#xff0c;不构成推荐…

如何应对网站的Canvas等高级指纹和MAC地址检测?

随着互联网技术的发展&#xff0c;网站和应用程序采用了越来越多的高级指纹和MAC地址检测技术来追踪用户和识别其身份。其中&#xff0c;Canvas指纹是一种常见的高级指纹检测技术&#xff0c;而MAC地址是设备的唯一标识符。在本文中&#xff0c;我们将了解Canvas指纹和MAC地址的…

联通宽带+老毛子Padavan固件 开启IP v6

联通宽带开启IP v6 参考&#xff1a; 联通宽带开启 IPV6 的方法_联通ipv6怎么开通-CSDN博客 个人宽带如何开启IPv6网络访问 - 知乎 (zhihu.com) 首先&#xff0c;你要确定当前你所在的地区运营商已经开通了IPV6&#xff0c;可以使用手机流量 IP查询(ipw.cn) | IPv6测试 | IPv…

电商早报 | 12月13日| 2023胡润男企业家榜发布:黄铮位于第三

2023胡润男企业家榜发布&#xff1a;拼多多创始人跻身前三 12月12日消息&#xff0c;胡润研究院发布《2023胡润男企业家榜》&#xff0c;列出了胡润百富榜中前50名中国男性企业家&#xff0c;总财富6.37万亿元&#xff0c;上榜门槛640亿元。 这是胡润研究院首次发布“男企业家…

概率的乘法公式

两个事件的情况 假设A、B为随机事件&#xff0c;并且事件A的概率&#xff0c;那么 三个事件的情况 假设A、B、C为随机事件&#xff0c;并且&#xff0c;那么 多个事件的情况 假设为随机事件&#xff0c;其中&#xff0c;并且&#xff0c;那么

【Linux系统编程二十一】:(进程通信3)--消息队列/信号量(system v标准的内核数据结构的设计模式)

【Linux系统编程二十】&#xff1a;消息队列/信号量(system v标准的内核数据结构的设计模式&#xff09; 一.消息队列二.system v标准的内核数据结构的设计三.四个概念(互斥/临界)四.信号量1.多线程并发访问2.计数器3.原子的4.总结 一.消息队列 一个叫做a进程啊&#xff0c;一个…

如何使用CFImagehost结合内网穿透搭建简洁易用的私人图床并远程访问

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

Python 递归及目录遍历

递归调用&#xff1a;一个函数&#xff0c;调用了自身&#xff0c;称为递归调用 递归函数&#xff1a;一个会调用自身的函数 凡是循环能做的事&#xff0c;递归都能做。 目录 递归示例 普通方法实现 递归方式实现 计算分析&#xff1a; 递归遍历目录 引入os 遍历目录 执…

许战海战略文库|美国品牌实践:从品类品牌向产业品牌转变

引言&#xff1a;《品类战略》是上世纪70年代特劳特和里斯所推崇的定位理论,强调“品类聚焦是唯一正确的战略“新品类要使用新品牌”等战略思想,并对品牌延伸等多元化品牌进行批判,并由中国代理人传入中国&#xff0c;从2002年至今滋生了众多品类品牌,阻碍中国经济发展。 在今天…

招不到人?用C语言采集系统批量采集简历

虽说现在大环境不太好&#xff0c;很多人面临着失业再就业风险&#xff0c;包括企业则面临着招人人&#xff0c;找对口专业难得问题。想要找到适合自己公司的人员&#xff0c;还要得通过爬虫获取筛选简历才能从茫茫人海中找到公司得力干将。废话不多说&#xff0c;直接开整。 1…

python+appium自动化常见操作

1、点击、输入操作 #点击 driver.find_element(id,com.lemon.lemonban:id/navigation_my).click() #输入 driver.find_element(id,com.lemon.lemonban:id/et_password).send_keys(abc)2、隐形等待 driver.implicitly_wait(10)3、显性等待 #显性等待 locator (xpath,xpath) wai…

如雨后春笋般层出不穷的人工智能,究竟可以为我们的生活带来些什么?

似乎是从chatgpt爆火以后&#xff0c;各种各样的和AI、人工智能有关的产品层出不穷&#xff0c;似乎只有带有人工智能&#xff0c;才能体现一个产品的功能之强大&#xff0c;才能在众多产品中具有一定的竞争力&#xff0c;那么这样的现象会给我们的生活带来什么影响呢&#xff…

如何利用Axure制作移动端产品原型

Axure是一款专业的快速原型设计工具&#xff0c;作为专业的原型设计工具&#xff0c;Axure 能够快速、高效地创建原型&#xff0c;同时支持多人协作设计和版本控制管理。它已经得到了许多大公司的采用&#xff0c;如IBM、微软、思科、eBay等&#xff0c;这些公司都利用Axure 进…

案例041:基于微信小程序的私家车位共享系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

区块链媒体宣发:揭示优势与趋势,引领信息传播新时代

在数字化潮流中&#xff0c;区块链技术正以惊人的速度改变着传媒行业的格局。从区块链媒体宣发中获得的种种优势和未来的趋势&#xff0c;不仅为企业带来了新的推广途径&#xff0c;也在信息传播领域掀起了一场革命。本文将深入探讨区块链媒体宣发的优势以及未来的发展趋势。 1…

漏洞补丁存在性检测技术洞察

1、 漏洞补丁存在性检测技术是什么&#xff1f; 漏洞补丁存在性检测技术通俗的理解就是检测目标对象中是否包含修复特定已知漏洞的补丁代码&#xff0c;目标检测对象可能是源码&#xff0c;也能是二进制文件。 2、 漏洞补丁存在性检测技术业务背景 补丁检测这个问题背景是产品…

探索未来新趋势:鸿蒙系统的崭新时代

探索未来新趋势&#xff1a;鸿蒙系统的崭新时代 随着科技的不断发展&#xff0c;操作系统作为计算机和移动设备的核心&#xff0c;扮演着至关重要的角色。近年来&#xff0c;一种备受瞩目的操作系统——鸿蒙系统&#xff08;HarmonyOS&#xff09;崭露头角&#xff0c;正引领着…

二叉树(接口函数的实现)

今天继续来分享的是二叉树&#xff0c;我们废话不多说&#xff0c;直接来看下面的几个接口函数&#xff0c;然后我们把他们实现&#xff0c;我们就掌握二叉树的二分之一&#xff08;今天粉丝破千了&#xff0c;属实有点高兴了&#xff09;。 typedef char BTDataType;typedef s…