首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
什么是docker,docker办理了什么题目
返回列表
发新帖
什么是docker,docker办理了什么题目
[复制链接]
发表于
3 小时前
|
显示全部楼层
|
阅读模式
什么是docker,docker办理了什么题目
用docker可以办理什么题目
在一样寻常开发中,我们大概常常面对如许的题目
情况划一性题目
,同一个步伐,大概在开发情况能运行,但是到测试、生产情况就会遇到各种各样的题目,这是由于步伐的正常运行必要精确的库和设置,不肯定每个
服务器
都能同一设置。
可移植性差
,好比我们在A
服务器
(Ubuntu体系)上摆设了一个应用步伐,假如要迁移到B
服务器
(Centos体系),由于利用体系的差别,则摆设步伐的脚本要重新适配。好比Ubuntu体系安装jdk的下令是sudo apt install openjdk-11-jdk,centos就是sudo yum install java-11-openjdk-devel。
库和依赖的辩论
,同一个服务器上,摆设多个步伐,大概步伐A依赖python2.x
版本
的库,而步伐B依赖python3.x的库,导致两个步伐依赖发生辩论,产生一些不可预估的错误。
步伐之间相互影响
,同一个服务器上,摆设多个步伐,假如步伐A发生故障,耗尽了服务器资源,则步伐B也会受到影响。
针对以上题目,我们的办理方案大概有:
一个服务器摆设一个步伐,可以办理上述3、4的题目,但是缺点是本钱太。
通过假造化技能在宿主机上假造多个vm,每个vm摆设一个步伐,也可以办理肯定的题目,但是缺点是假造机技能必要通过
假造化管理步伐(Hypervisor)
对盘算机底层硬件做假造化,而且每个vm都有单独的利用体系,内核,硬件驱动步伐,仅为了隔离单个应用步伐而启动 VM 会带来很大的开销。
针对以上的题目,docker应用而生,docker也是一种假造化技能,但是不对底层硬件做假造化,也不消假造化整个利用体系,而是只假造一个
容器
,这个
容器
只包罗应用步伐所必要库和设置。它运行在宿主机利用体系的用户空间中,作为一个独立的进程存在,然后通过
定名空间(Namespace)
技能隔离各个
容器
的进程,确保它们互不干扰,同时使用
控制组(cgroups)
来限定和
监控
容器的资源使用情况,包罗 CPU、内存、块 I/O 等,确保每个容器在资源使用上的隔离与管理。
我们在来总结一些docker的上风吧:
轻量级
:docker 容器与传统假造机相比,启动速率更快,资源占用更少,由于容器共享宿主利用体系的内核,而不必要运行完备的利用体系。
快速摆设与弹性扩展
:docker容器可移植性好,提供了快速构建、摆设和扩展应用的本领,使得在必要时可以快速启动新的容器实例。
简化的一连集成和一连交付(CI/CD)
:docker 可以很容易地与 CI/CD 工具集成,简化应用的构建和摆设流程。好比我们有一个开发中的应用步伐,当我们在本地测试完毕后,可以推送
代码
到Git堆栈,然后触发CI工具(Jenkins等),CI工具就可pull到最新的
代码
,使用 Dockerfile 文件构建应用步伐的 docker 镜像,并触发单元测试和集成测试。假如测试通过,CI 工具就会将构建好的 docker 镜像推送到 docker 镜像堆栈,接下来,可以使用 CD 工具(如 Kubernetes、docker Swarm 或其他容器编排工具)主动摆设新镜像到生产情况。在生产情况中,CD 工具会拉取最新的 docker 镜像并更换掉现有的应用实例,确保新
版本
的应用顺遂上线。这是假造机做不到的。
明白docker的几个概念
容器(container)
什么是容器,就是用来
存储
物品的储存器,那么docker容器也是一样的,只不外docker容器
存储
的是应用步伐运行所必要的全部库、依赖、设置。体如今我们的利用体系里,是一个独立的的进程。容器有以下特点:
自包罗
,容器包罗运行必要的统统情况和设置,不依赖宿主机。
隔离的
,容器独立运行,多个容器是相互隔离的,对其他容器和宿主机没有影响,
安全
性有保障。
独立
,删除一个容器不影响其他容器。
可移植
,由于容器内包罗了运行应用所需的全部依赖,可以在任何支持 docker 的平台上运行同一个容器。
容器镜像(image)
我们说容器是一个隔离的进程,那么在这个进程内怎样获取文件和设置,我们又怎样将这个体现为进程的容器移植大概分享呢。镜像的概念就有了,我们可以将容器打包成一个镜像,这个镜像是一个静态的快照,此中包罗容器运行必要的全部文件、库、设置。然后将镜像分发给必要的开发职员,其他开发职员在得到镜像后,就可以通过docker run在他们得呆板上启动一个新的docker容器实例。镜像有以下特点:
docker 镜像由
多个层构成
,每一层都是
只读
的,这些层在镜像创建时就已经固定,无法在运行时举行修改。
通过镜像启动一个容器时,docker 会在镜像的最上面创建一个新的可写层。全部对容器的修改(如创建文件、修改文件、安装软件等)都会在这个可写层中举行,而原始的镜像层保持稳固。
注册表(registry)
注册表类似于Github,Github用来
存储
代码
,开发者A写完代码可以通过git push推动到代码堆栈,开发者B可以通过git pull来获取到A提交得最新代码。注册表也是一样的,它可以会合存储和管理容器镜像,开发职员可以通过docker pull <image_name>从注册表下载镜像,可以通过docker push image_name将本地的镜像上传到注册表。docker官方提供了一个公共的注册表,我们也可以搭建私有化的注册表。
docker compose
通过docker run可以运行单个容器,但是我们建立一个网站大概必要启动MySql、Redis、Nginx、App等多个服务,假如我们将这些全部的内容都放在一个容器内,耦合性太强,并不是一个最佳实践,最好的方案是每个服务都是一个单独的容器,那如今我们就有4个容器,而且这4个容器的启动必要按照肯定的次序(MySql->Rddis->Nginx->App)举行。固然我们可以使用docker run一次启动这多个容器,但是
docker compose
为我们提供了一种更优雅方便的方案,我们可以将全部的容器和设置界说在一个yaml文件中,然后通过docker compose up来一键启动全部的容器,而且其他开发者也可以根据这个yaml来启动和运行。这是一个docker官网给出的示例yaml:
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
复制代码
docker根本架构
docker 使用客户端-服务端架构。紧张有客户端(docker clinet)、保卫进程(docker daemon)、镜像、容器、注册表等组件。docker 客户端和保卫进程可以在同一体系上运行,毗连到长途 docker 保卫进程,docker 客户端和保卫步伐使用 REST
API
、UNIX 套接字或网络接口举行通讯。
客户端(docker clinet):通过下令行接口(CLI)与 保卫进程通讯。用户在下令行输入的指令会被发送到保卫进程,保卫进程举行下令的剖析和处理惩罚
保卫进程(docker daemon):监听客户端的哀求并处理惩罚,管理docker对象,比方容器的创建、删除、克制、启动,从注册表拉取镜像、将本地镜像推送到注册表,构建镜像,网络管理、存储管理、资源分配
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
云原生
Postrge-SQL
何小豆儿在此
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表