首页 > 其他分享 >docker入门

docker入门

时间:2024-08-31 21:53:04浏览次数:5  
标签:容器 入门 Kubernetes 可以 Podman Linux docker Docker

1、先说说容器吧

1)容器到底是啥 

简单来说,它就是个小工具,可以把你想跑的程序,库文件啊,配置文件都一起“打包”。然后,我们在任何一个计算机的节点上,都可以使用这个打好的包。有了容器,一个命令就能把你想跑的程序跑起来,做到了一次打包,就可以到处使用。 比如我们可以把整套zabbix环境(httpd+php+mysql+zabbix-server)一起打包,然后给它搬到其它机器上直接运行。

有人把Docker和容器划等号,其实不对,Docker只是一个容器工具,而真正的容器技术是LXC(Linux Container),Docker只是更加方便地将其展现出来。



docker入门_运维

容器就像上面图里的集装箱,每一个集装箱里面都是一个完整的应用,可以将其放到任意一台机器上运行起来。

2)容器与虚拟化

容器类似于虚拟化,但和虚拟化有本质区别

docker入门_运维_02


虚拟化会使用虚拟机监控程序模拟硬件,从而使多个操作系统能够并行运行。但这不如容器轻便。

Linux 容器在本机操作系统上运行,与所有容器共享该操作系统,因此应用和服务能够保持轻巧,并行化快速运行。Linux 容器是我们开发、部署和管理应用方式的又一次飞跃。

Linux 容器镜像提供了可移植性和版本控制,确保能够在开发人员的笔记本电脑上运行的应用,同样也能在生产环境中正常运行。

相较于虚拟机,Linux 容器在运行时所占用的资源更少,使用的是标准接口(启动、停止、环境变量等),并会与应用隔离开。

此外,作为包含多个容器的大型应用的一部分时更加易于管理,而且这些多容器应用可以跨多个云环境进行编排。

3)容器基本概念

LXC:

是Linux Contain的缩写,就是Linux容器,是一个基于Linux内核功能特性实现轻量级虚拟化的技术。注意,Docker/Podman等容器技术,都是在LXC基础之上开发的三方工具。

LXC可以在操作系统层次上为进程提供虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限

制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

docker入门_Docker_03

容器的隔离:

容器有效地将操作系统管理的资源划分到独立的组中,并把各个独立的组进行隔离,可以让各自的组占用独立的资源,完成自己独立的任务。

因为容器最终执行的命令也是调用统一的os api来实现,是基于整个os来实现的,所以不需要单独操作系统的编译系统、执行解释器,一切工作都是基于os 的基础上来完成的。

容器通过提供一种创建和进入容器的方式,让程序像跑在独立机器那样在容器中运行,并且相互之间不影响,而且还可以共享底层的资源。

容器的共享:

容器提供环境隔离的前提下,还提供了资源共享的机制,所以容器比真正kvm 虚拟机的资源要节省许多;


4)容器核心技术

chroot: 

创建一个虚拟的根目录文件系统,其实质还是调用底层的文件系统,不过是建立一个虚拟的、可以跟其它容器的虚拟文件系统相互隔离、但共享底层的文件系统

namespace : 

命名空间可以提供一个进程相互隔离的独立网络空间,不同的容器间进程pid可以相同,进程并不冲突影响,但可以共享底层的计算和存储资源

cgroups: 

实现了对容器的资源分配和限制,比如给容器A分配4颗CPU,8G 内存,那这个容器最多用这么多的资源。如果内存超过8G ,会启动swap,效率降低,也可能会被调度系统给kill掉

5)企业为什么要使用容器技术

提升效率:

容器可以快速移植,这就意味着企业在开发、部署阶段快速搭建开发、测试环境,并快速部署到生产环境里。

节省资源:

一台物理机上可以运行几百个甚至上千个容器,这如果换成传统的虚拟化技术,是根本做不到的。

节省运维成本:

使用主流的容器编排和管理工具(如,K8s),可以大大降低企业的运维成本,因为K8s本身集成了高可用、负载均衡、监控、自动修复等诸多功能,一旦上线,几乎不用花额外的运维成本。

2、跟容器相关的工具(只罗列具有代表性的)

1)Docker

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。

Docker诞生于2013年,它的出现推动了容器技术发展的步伐,使其突飞猛进、日新月异。可以说,没有Docker,就没有后续的K8s、云原生。

学K8s之前,需要先学Docker,学会其镜像、容器、卷等概念。

2)Podman

Podman是一个开源项目,在Github上已有12k+Star,可在大多数Linux平台上使用。

Podman是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI(Open Container Initiative)容器和容器镜像。

Podman提供了一个与Docker兼容的命令行工具,可以简单地为docker命令取别名为podman即可使用,所以说如果你会Docker的话可以轻松上手Podman。

目前在RHEL系统里默认自带了Podman,说明红帽公司更倾向于Podman。

3)Kubernetes(K8s)

简单来说,Kubernetes 就是一个生产级别的容器编排平台和集群管理系统,不仅能够创建、调度容器,还能够监控、管理服务器,它凝聚了 Google 等大公司和开源社区的集

体智慧,从而让中小型公司也可以具备轻松运维海量计算节点——也就是“云计算”的能力。

作为世界上最大的搜索引擎,Google 拥有数量庞大的服务器集群,为了提高资源利用率和部署运维效率,它专门开发了一个集群应用管理系统,代号 Borg,在底层支持整个公司的运转。

2014 年,Google 内部系统要“升级换代”,从原来的 Borg 切换到 Omega,于是按照惯例,Google 会发表公开论文。在发论文的同时,把 C++ 开发的 Borg 系统用 Go 语言重写并开源,于是 Kubernetes 就这样诞生了。

由于 Kubernetes 背后有 Borg 系统十多年生产环境经验的支持,技术底蕴深厚,理论水平也非常高,一经推出就引起了轰动。

然后在 2015 年,Google 又联合 Linux 基金会成立了 CNCF(Cloud Native Computing Foundation,云原生基金会),并把 Kubernetes 捐献出来作为种子项目。

有了 Google 和 Linux 这两大家族的保驾护航,再加上宽容开放的社区,作为 CNCF 的“头把交椅”,Kubernetes 旗下很快就汇集了众多行业精英,仅用了两年的时间就打败了同期的竞争对手 Apache Mesos 和 Docker Swarm,成为了这个领域的唯一霸主。


标签:容器,入门,Kubernetes,可以,Podman,Linux,docker,Docker
From: https://blog.51cto.com/ruguworking/11884280

相关文章

  • C++基础(1)——入门知识
    目录1.C++版本更新2.C++参考⽂档:3.C++书籍推荐4.C++的第⼀个程序5.命名空间5.1namespace的价值5.2namespace的定义5.3命名空间使⽤6.C++输⼊&输出7.缺省参数8.函数重载9.引⽤9.1引⽤的概念和定义9.2引⽤的特性9.3引⽤的使用9.4const引⽤ 9.5指针和引⽤的关......
  • 【Linux】阿里巴巴开源系统性能监视工具tsar:支持收集和报告系统的各种性能数据,包括CPU
    tsar是一个功能强大且用户友好的系统性能监视工具,广泛应用于开发者和系统管理员中。本文将带你从tsar的基础知识开始,逐步深入到中级和高级用法,帮助你全面掌握tsar的强大功能。......
  • Docker Push Error "denied: requested access to the resource is denied": 终极解决
    预览版:终极解决方案——把库删了,再重新建一个名字一样的,然后push一般dockerlogin登录之后,sudodockerpushusername/dockername:latest就能成功push了。然后我还是有报错:xxxxxxxxxxxx:Preparingxxxxxxxxxxxx:Preparingxxxxxxxxxxxx:Preparingxxxxxxxxxxxx:Preparing......
  • 20240831_174849 scratch 画笔模块入门必会
    20240904_015445scratch认识画笔模块画笔模块属于软件的内置模块使用前需要导入一下功能是可以实现绘画功能相关积木20240904_025445scratch绘制一条直线需求绘制一条直线实现20240904_035445scratch绘制一条粗直线需求实现20240904_045445scrat......
  • docker搭建nats集群
    SupportDocker-ComposeDeploynats+nats-streaming集群方案1通过nats+nats-streaming搭建3节点nats集群,nats提供服务;2支持认证;3nats-streaming提供节点和消息持久化;启动gitclonehttps://github.com/xiliangMa/nats-cluster.gitcddocker-composedock......
  • 怎么入门网络安全,学这两类证书就够了NISP或CISP_cisp和nisp2级题库一样吗
    其实网络安全这个门槛,对于当代的年轻人来说,不高也不低。其中NISP证书分为一级、二级、三级(专项),证书由中国信息安全测评中心颁发,持NISP二级证书可与免考兑换CISP证书。因为CISP报考需要工作经验,NISP填补了在校大学生无法考取CISP证书的空白,被称为“校园版CISP”。看到上一......
  • Datawhale X 李宏毅苹果书AI夏令营深度学习入门(二)
    一.深度学习继续上一篇文章的深度学习的定义把w跟b更新的方向结合起来,就是一个向量,就是红色的箭头,再计算一次微分,再决定要走什么样的方向,把这个微分的值乘上学习率,再乘上负号,我们就知道红色的箭头要指向那里,就知道如何移动w跟b的位置,一直移动,期待最后可以找出一组不错的......
  • 入门篇-其之七-Java运算符
    入门篇-其之七-Java运算符(下)合集-iCode504的Java学习空间(13)1.入门篇-其之一-第一个Java程序2023-07-232.入门篇-其之二-Java基础知识2023-09-043.入门篇-其之三-基本数据类型及其转换2023-09-064.入门篇-其之四-字符串String的简单使用2023-09-255.入门篇-其之......
  • 我如何在一个月内转行入门网络安全
    首先我们来讲下第一点:网络安全他的一个前景。说到网络安全前景,我们可以从四个层面去分析:首先是国家层面,如果对网安稍微有点了解的同学应该听过“没有网络安全就没有国家安全”的重要讲话。并且呢随着网安法等一系列重大文件相继发布实施。也是为网安企业提供了宝贵机遇。......
  • 【从入门到普及-】P1001 A+B Problem
    上一篇居然这么受欢迎!所以今天更下一篇啦!(读者:那么我觉得这件事实在是,泰库辣)介绍没啥好介绍的了,反正这题看似不难,实则非常简单。(读者:so?)#A+BProblem题目背景强烈推荐[新用户必读帖](/discuss/show/241461)。**不熟悉算法竞赛的选手请看这里:**算法竞赛中要求的输出格式......