首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏编程黑洞

    容器的本质

    并且运行容器的命令为1号进程。 ps aux / # echo $$ 1 在宿主机中可以看到该容器进程ID并不为1。 再次证明容器也只是宿主机中的一个进程而已。 \n"); return 0; } [root@k8s-master k8s]# gcc a.c -o a [root@k8s-master k8s]# . 先拷贝一个文件系统出来作为我们容器的根文件系统 docker export 48ab2ddd04dc | tar -C .

    63620编辑于 2023-03-06
  • 来自专栏Java编程技术

    Docker容器的本质

    image.png 先说结论:Docker容器的本质是一个特殊的进程。 学过操作系统的大家应该知道进程其实是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 其实在操作系统视角来看,处于运行时的Docker容器本身也是一个进程,只是这个进程比较特殊,下面我们就来说说他特殊在哪里 针对Linux容器来说,为了实现容器间资源隔离与限制,其对容器进程做了下面的处理 第一:其使用Linux提供的NameSpace技术来修改Docker容器进行时视图,实现每个容器有相互隔离的网络命名空间、进程空间等;比如你在Docker容器内查看进程列表,会发现容器自身是1号进程, 第二:使用Linux提供的NameSpace技术仅仅解决了容器之间的隔离问题,但是还是没法控制每个容器对资源使用的限制问题,比如还是无法控制每个容器可以使用多少cpu和内存等资源。 总结:针对Linux内核的容器,比如Docker容器来说,其本质是一个特殊的进程。

    56720编辑于 2023-03-23
  • 来自专栏漫漫架构路

    探寻容器的本质

    什么是容器技术 云原生的基础就是容器化。可以说正是容器技术的快速发展,才推动了云原生的时代浪潮。 要想理解容器的本质,我们先来聊聊是容器技术。 广义上来说:容器技术 = 动态的容器 + 静态的镜像 + 远端的仓库。容器、镜像和仓库构成了容器技术的三要素,其中最核心的概念就是容器。 这两个概念我们后面的章节会详细展开,本节就先来说一下容器。 容器的本质 那么到底什么是容器呢? 其实容器和集装箱做的是同样的事情。结合对集装箱的理解,我们尝试给容器下一个定义: 容器,英文 Container,本质就是对进程的封装。 容器化 vs 虚拟机 既然说容器的核心是为了解决应用的隔离问题,那么虚拟化技术也可以实现这个目标,容器和虚拟机到底有什么区别呢?

    78821编辑于 2022-09-28
  • 来自专栏多选参数

    脱掉容器的外表,看透容器的本质!

    什么是容器? 容器其实是一种特殊的进程而已,只是这个进程运行在自己的 “运行环境” 中,比如有自己的文件系统而不是使用主机的文件系统(文件系统这个对我来说印象是最深刻的,也是让人对容器很更好理解的一个切入点)。 技术来手动创建一个容器,演示 Linux 容器最基本的实现原理。 这种就使得进程运行在一个独立的“运行环境”里,也就是容器里面。 因此,对接一开始所说的,还想再唠叨一句:**容器其实就是一种特殊的进程而已。 相比虚拟机的方式,本质是进程的容器则仅仅是在操作系统上划分出了不同的“运行环境”,从而使得占用资源更少,部署速度更快。 巨人的肩膀 1.

    79210发布于 2020-12-03
  • 来自专栏五分钟学K8S

    五分钟学K8S系列 - docker 容器的本质

    上一篇我们从linux 容器的诞生,与架构对docker 有了初步的了解,这个篇章我们将透过现象看本质,深入的探索Linux容器化与Docker 技术 的原理与本质。      在 Docker 中,unshare() 系统调用被用于创建新的命名空间,并将容器进程与主机进程分离开来,以实现容器的隔离。这个命名空间将成为容器进程的根命名空间,容器进程只能访问该命名空间下的资源。 然后,Docker 会将容器进程切换到容器的网络命名空间中,以获得独立的网络接口和 IP 地址。 ,Docker 会使用 setns() 系统调用将容器进程切换到相应的命名空间中,并将容器进程加入到相应的 cgroups 中,以限制容器使用系统资源。 此外,Docker 还会挂载容器的文件系统层,并启动容器中定义的应用程序。

    73920编辑于 2024-04-30
  • 来自专栏JavaEdge

    Docker容器实战(八) - 漫谈 Kubernetes 的本质

    作为一名开发者,我并不关心容器运行时的差异。 因为,在整个“开发-测试-发布”的流程中,真正承载着容器信息进行传递的,是容器镜像,而不是容器运行时。 从一个开发者和单一的容器镜像,到无数开发者和庞大容器集群,容器技术实现了从“容器”到“容器云”的飞跃,标志着它真正得到了市场和生态的认可。 在“功能单位”划分上,容器却有着独到的“细粒度”优势: 毕竟容器的本质,只是一个进程而已 就是说,只要你愿意,那些原挤在同一VM里的各个应用、组件、守护进程,都可被分别做成镜像! 总结 首先,一起回顾了容器的核心知识,说明了容器其实可以分为两个部分 容器运行时 容器镜像 然后,重点介绍了Kubernetes的架构,详细讲解了它如何使用“声明式API”来描述容器化业务和容器间关系的设计思想 所以说,Kubernetes的本质,是为用户提供一个具有普遍意义的容器编排工具。 Kubernetes为用户提供的不仅限于一个工具。

    1.2K30发布于 2019-10-18
  • 来自专栏静默虚空的博客

    8_容器

    [C++][基础]8_容器 8.1   顺序容器 8.2   关联容器   注:在迭代关联容器时,我们可以确保按键的顺序访问,而与元素在容器中的存放位置完全无关。 关联的本质在于元素的值与某个特定的键相关联。   map和set的键必须是唯一的,且不能修改。 8.2.1  pair类型 Pair是一种模板类型,但不是容器。   

    43320编辑于 2022-05-10
  • 来自专栏深度学习与python

    从容器到容器云,什么才是 Kubernetes 的本质? | 极客时间

    这两年,Kubernetes 击败了 Swarm 和 Mesos,几乎成为容器编排的事实标准,BAT、滴滴、京东、头条等大厂,都争相把容器和 K8s 项目作为技术重心,试图“放长线钓大鱼”。 据说,今年计划完成 100% 基于 K8s 集群的业务部署。而服务网格这块儿,在阿里的一些部门(比如蚂蚁金服),已经有线上业务在用了。 这充分说明了容器在当今软件研发领域的地位。 这两年,跟朋友探讨 K8s 落地时,也有一些问题被反复提及,比如: 为什么容器里只能跑“一个进程”? 之前一直用的某个 JVM 参数,在容器里怎么不好使了? 在专栏中,他用深入浅出的方式,从看似复杂的 Kubernetes 项目中梳理出一条主线,带你理解容器和 K8s 背后的设计思想和逻辑,从而解决工作中遇到的问题。 所以,这次以“容器”为名的历史变革,又有什么理由作壁上观呢? 点击「阅读原文」 输入粉丝专属口令「k8sk8sk8s」 立省 ¥80 入手,仅 前 50 人有效 首单限时特惠,仅需¥69.9

    1K10编辑于 2023-04-01
  • 来自专栏嘉为动态

    Docker操作实践(1):容器的本质是什么?容器从何而来?

    微信图片_20190910094723.jpg 容器本质之进程隔离 1. 容器本质 容器本质上是一种进程隔离的技术。容器为进程提供了一个隔离的环境,容器内的进程无法访问容器外的进程。 2. 并且使用“障眼法”对这个子进程的进程编号进行了重新编号,使得用户在容器中查看进程时,如同身处于一个OS环境中。 容器本质之文件隔离 1. 使用chroot来实现文件隔离 容器的本质是进程隔离,那么容器与外部之间也会存在着文件的隔离。文件系统隔离,这也是容器概念的起始。 容器本质之Namespace 1. Namespace的类别 在后面的容器技术中,实现上都离不开Linux的Namespace技术。 这个过程中会配置容器的cgroup,创建容器内部的网络设备,配置容器内部的信息,如hostname、ip地址等 最后启动容器中需要运行的进程Endtrypoint 作者:沈晓龙 ---- 今天作者介绍了容器的本质与概念

    2.6K41发布于 2019-09-25
  • 来自专栏YeTechLog

    【探索 Kubernetes|容器基础进阶篇 系列1】容器的本质是进程

    这个时候就出现了容器部署,容器解决了应用打包的这个根本难题 当然还要其它应用场景,这里只是说明一个举例。 二、容器是什么? 容器的本质是一个进程 宿主机上我们执行 ps 命令可以看到,宿主机上有个进程,这个进程是我们运行容器时所使用的命令,也代表了我们容器也是一个进程表现出来的,所以 容器的本质是一个进程。  docker run -it busybox /bin/sh 进程退出了,说明了 容器的本质是一个进程。 总结 相信大家学容器时都看过这个虚拟机和容器的对比图。 这样的说明并不严谨,因为 容器本质是运行在宿主机上的进程,使用的是 Namespace 技术,通过 Namespace 技术实现网络、磁盘、PID、用户等隔离。

    55900编辑于 2023-06-23
  • 来自专栏张善友的专栏

    .NET 8 的openEuler 容器镜像

    目前.NET 8的容器镜像已经支持openEuler,以openEuler为基础镜像的应用镜像:dotnet-deps、dotnet-runtime 和 dotnet-aspnet。 基础镜像简介 这里存放着由openEuler官方提供的容器镜像,包含openEuler基础镜像、应用镜像。在这里,你可以参考对应镜像的介绍,部署你需要的镜像容器。 openeuler-docker-images 基础镜像地址 repo.openeuler.org 应用镜像仓库 基础镜像以及应用镜像会上传到以下仓库 hub.docker.com quay.io 1 hub.oepkgs.net 运行容器

    60810编辑于 2024-05-06
  • 来自专栏千里行走

    kubernetes-8:kibana容器化

    Helm部署步骤详见笔者git地址: https://github.com/hepyu/k8s-app-config/tree/master/helm/min-cluster-allinone/kibana-min yaml部署步骤详见笔者git地址: https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/kibana-min 4.restartPolicy 正文 (1).容器化组件 容器化成功后的组件: ? 的yaml配置文件: https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/kibana-min 提供了一个 3.readinessProbe pod就绪判定标准, 很有必要;当es集群负荷过高时,kibana与es的联通会不通畅,需要K8S去识别是kibana pod是不是真的宕机了。 ?

    1.5K20发布于 2019-07-03
  • 来自专栏云计算与大数据

    k8s: Init 容器

    它是一种专用的容器,在应用容器启动之前运行,并包括一些应用镜像中不存在的实用工具和安装脚本。 Pod 能够具有多个容器,应用运行在容器里面,但是它也可能有一个或多个先于应用容器启动的 Init 容器。 Init 容器与普通的容器非常像,除了如下两点: 它们总是运行到完成。 与普通容器的不同之处 Init 容器支持应用容器的全部字段和特性,包括资源限制、数据卷和安全设置。 然而,Init 容器对资源请求和限制的处理稍有不同,在下面 资源 处有说明。 每个 Init 容器必须运行成功,下一个才能够运行。 当所有的 Init 容器运行完成时,Kubernetes 初始化 Pod 并像平常一样运行应用容器。 Init 容器能做什么? 它们在应用容器启动之前运行完成,然而应用容器并行运行,所以 Init 容器提供了一种简单的方式来阻塞或延迟应用容器的启动,直到满足了一组先决条件。

    1.5K21发布于 2018-10-18
  • 来自专栏我的小碗汤

    大咖一文讲透 容器设计模式 的本质

    在使用容器 Docker 的时候,也没有这个说法。其实,如果想要理解 Pod,首先要理解容器,所以来回顾一下容器的概念: 容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。 注意:Linux 容器的“单进程”模型,指的是容器的生命周期等同于 PID=1 的进程(容器应用进程)的生命周期,而不是说容器里不能创建多进程。 真正起来在物理上存在的东西,就是四个容器,这四个容器,或者说是多个容器的组合就叫做 Pod。 Sidecar:代理容器 Sidecar 的第二个用法,可以称作为代理容器 Proxy。什么叫做代理容器呢? ; 所有“设计模式”的本质都是:解耦和重用。

    85040发布于 2019-10-25
  • 来自专栏云计算D1net

    容器与虚拟机究竟有何本质上的差异?

    作为一种部署应用程序的全新方式,容器技术在短时间内获得了广泛关注,但是这种技术同样存在某些限制,并且和虚拟机存在本质上的不同。 而容器环境的工作方式则有所不同。对于容器环境来说,需要首先安装主机操作系统,之后将容器层(比如LXC或libcontainer)安装在主机操作系统(通常是Linux变种)之上。 在安装完容器层之后,就可以从系统可用计算资源当中分配容器实例了,并且企业应用可以被部署在容器当中。但是,每个容器化应用都会共享相同的操作系统(单个主机操作系统)。 相比于虚拟机,容器拥有更高的资源使用效率,因为它并不需要为每个应用分配单独的操作系统——实例规模更小、创建和迁移速度也更快。这意味相比于虚拟机,单个操作系统能够承载更多的容器。 云提供商十分热衷于容器技术,因为在相同的硬件设备当中,可以部署数量更多的容器实例。然而,单个操作系统有可能引起影响所有相关实例的单点事故。比如,恶意软件或者主机操作系统崩溃可能禁用或者影响所有容器。

    1.6K80发布于 2018-03-23
  • 来自专栏Visual Codex

    STL学习笔记(8)常用容器 list

    list 和 vector 是两个最常被使用的容器。 ? list 容器是一个双向链表。 采用动态存储分配,不会造成内存浪费和溢出。 链表灵活,但是空间和时间额外耗费较大 list 容器的迭代器 List 容器不能像 vector 一样以普通指针作为迭代器,因为其节点不能保证在同一块连续的内存空间上。 2. list 数据元素插入和删除操作 push_back(elem);//在容器尾部加入一个元素 pop_back();//删除容器中最后一个元素 push_front(elem);//在容器开头插入一个元素 3. list 大小操作 size();//返回容器中元素的个数 empty();//判断容器是否为空 resize(num);//重新指定容器的长度为 num, 若容器变长,则以默认值填充新位置。 如果容器变短,则末尾超出容器长度的元素被删除。 resize(num, elem);//重新指定容器的长度为 num, 若容器变长,则以 elem 值填充新位置。

    68020发布于 2021-04-13
  • 来自专栏summerking的专栏

    k8s容器时间修改

    如何处理 K8S 启动的POD,默认时区不准的问题。 Running 0 152m eureka-0 1/1 Running 0 4d2h mysql-ddd86f8fb 4d1h redis-0 1/1 Running 0 8d zuul-0 12 09:58:27 UTC 2021 [root@elasticsearch-b4489c797-cc28f elasticsearch]# exit exit # 使用 podpreset k8s eureka-0 1/1 Running 0 4d2h mysql-ddd86f8fb-7shp9 1/

    78510编辑于 2022-09-19
  • 来自专栏区块链入门

    【实践】8.DOCKER之操作容器

    内容 2.1 启动 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。 $ docker run -t -i ubuntu:18.04 /bin/bash root@af8bae53bdd3:/# 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 在交互模式下,用户可以通过所创建的终端来输入命令,例如 root@af8bae53bdd3:/# pwd / root@af8bae53bdd3:/# ls bin boot dev etc home $ docker run -dit ubuntu 243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550 $ docker container $ docker run -dit ubuntu 69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6 $ docker

    1.1K30发布于 2021-05-27
  • 来自专栏云攻略专区

    【容器TKE】K8s云服务如何实现容器优雅停止旧Pod容器服务?

    容器终止流程 以下为容器在 Kubernetes 环境中的终止流程: Pod 被删除,此时 Pod 里有 DeletionTimestamp,且状态置为 Terminating。 kubelet 将对 Pod 中各个 container 发送 SIGTERM 信号,以通知容器进程开始优雅停止。 等待容器进程完全停止,如果在 terminationGracePeriodSeconds 内 (默认30s) 还未完全停止,将发送 SIGKILL 信号强制停止进程。 所有容器进程终止,清理 Pod 资源。 具体操作步骤 使用 preStop 要实现优雅终止,务必在业务代码里处理 SIGTERM 信号。

    5.5K61编辑于 2023-06-07
  • 来自专栏Java升级打怪进阶之路

    【云原生】容器编排K8S

    user: kind-hello-k8s name: kind-hello-k8s - context: cluster: kind-test user: kind-test Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是 K8s 的最小可部署单元。 ports: - protocol: TCP port: 1024 targetPort: 1024 注意 targetPort 必须和 deployment 步骤里容器的导出端口一致 基础组件介绍 贡献者:幻灰龙 到目前为止,我们从 k8s 命令行安装和操作的角度理解到了 k8s 的很多基本概念: 容器(docker)里可以跑代码 pod 可以管理容器(docker) ReplicaSet worker 两种节点 我们也掌握了安装 k8s 的概念 kubectl 可以用来和 k8s 集群通讯,是 k8s 的命令行客户端 使用 minikube/kind 可以创建学习环境 k8s 集群 使用

    1.2K30编辑于 2022-11-28
领券