cgroups

容器技术之LXC

你离开我真会死。 提交于 2020-07-27 23:02:50
  什么是容器?在生活中我们常见的容器有各种瓶瓶罐罐、各种能够容纳其它物料的东西叫容器;容器的特点就是有着很好的隔离作用,使得不同的物料互相隔离;除此之外容器还方便运输、方便储存;这是生活中所说的容器,以及它的特点;在计算机领域中,所谓容器不外乎也有同生活中的容器的特点,隔离,方便“运输”(计算机中的运输我们叫移植,从系统A到系统B),方便“存储”(这里指程序以及运行所依赖的库文件打包,即程序及运行时环境打包);LXC是Linux containers的缩写,意思就是Linux 容器;Linux容器技术其实就是整合内核的功能,让其支持多个容器运行时资源相互隔离;我们知道内核的功能用户是无法直接操作的,必须得有一用户空间的软件,通过系统调用去操作内核功能;所以lxc就是用来操作Linux内核容器化的工具;这种逻辑有点类似iptables,iptables本身不对用户的报文做任何检查,真正生效的是内核netfilter;   LXC关键技术点:   1、chroot:根切换,一个改变当前运行进程以及其子进程的根目录的操作。一个运行在这种环境的程序无法访问根目录外的文件和命令。   2、namespaces:名称空间,LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag;   3、CGroups:控制组

【容器安全】Docker容器安全性分析

旧街凉风 提交于 2020-07-27 00:05:59
Docker是目前最具代表性的容器技术之一,对云计算及虚拟化技术产生了颠覆性的影响。本文对Docker容器在应用中可能面临的安全问题和风险进行了研究,并将Docker容器应用环境中的安全机制与相关解决方案分为容器虚拟化安全、容器安全管理、容器网络安全三部分进行分析。 一、从虚拟化安全到容器安全 1、传统虚拟化技术 虚拟化技术是实现硬件基础设施资源的充分利用、合理分配和有效调度的重要技术手段。例如,在基于OpenStack的典型IaaS服务中,云服务提供商可通过搭建设备集群建立资源池,并将服务器、存储和网络等底层资源进行弹性虚拟化提供给租户。 传统虚拟化技术以虚拟机为管理单元,各虚拟机拥有独立的操作系统内核,不共用宿主机的软件系统资源,因此具有良好的隔离性,适用于云计算环境中的多租户场景。 2、容器技术 容器技术可以看作一种轻量级的虚拟化方式,将应用与必要的执行环境打包成容器镜像,使得应用程序可以直接在宿主机(物理机或虚拟机)中相对独立地运行。容器技术在操作系统层进行虚拟化,可在宿主机内核上运行多个虚拟化环境。相比于传统的应用测试与部署,容器的部署无需预先考虑应用的运行环境兼容性问题;相比于传统虚拟机,容器无需独立的操作系统内核就可在宿主机中运行,实现了更高的运行效率与资源利用率。 Docker是目前最具代表性的容器平台之一,它模糊了传统的IaaS和PaaS的边界,具有持续部署与测试

【容器安全】Docker容器安全性分析

时光怂恿深爱的人放手 提交于 2020-07-26 20:04:44
Docker是目前最具代表性的容器技术之一,对云计算及虚拟化技术产生了颠覆性的影响。本文对Docker容器在应用中可能面临的安全问题和风险进行了研究,并将Docker容器应用环境中的安全机制与相关解决方案分为容器虚拟化安全、容器安全管理、容器网络安全三部分进行分析。 一、从虚拟化安全到容器安全 1、传统虚拟化技术 虚拟化技术是实现硬件基础设施资源的充分利用、合理分配和有效调度的重要技术手段。例如,在基于OpenStack的典型IaaS服务中,云服务提供商可通过搭建设备集群建立资源池,并将服务器、存储和网络等底层资源进行弹性虚拟化提供给租户。 传统虚拟化技术以虚拟机为管理单元,各虚拟机拥有独立的操作系统内核,不共用宿主机的软件系统资源,因此具有良好的隔离性,适用于云计算环境中的多租户场景。 2、容器技术 容器技术可以看作一种轻量级的虚拟化方式,将应用与必要的执行环境打包成容器镜像,使得应用程序可以直接在宿主机(物理机或虚拟机)中相对独立地运行。容器技术在操作系统层进行虚拟化,可在宿主机内核上运行多个虚拟化环境。相比于传统的应用测试与部署,容器的部署无需预先考虑应用的运行环境兼容性问题;相比于传统虚拟机,容器无需独立的操作系统内核就可在宿主机中运行,实现了更高的运行效率与资源利用率。 Docker是目前最具代表性的容器平台之一,它模糊了传统的IaaS和PaaS的边界,具有持续部署与测试

Are the container in a kubernetes pod part of same cgroup?

a 夏天 提交于 2020-07-18 11:50:09
问题 In a multi-container Kubernetes pod, are the containers part of the same cgroup (along with pod) or a separate cgroup is created for each container. 回答1: Cgroups Container in a pod share part of cgroup hierarchy but each container get's it's own cgroup. We can try this out and verify ourself. Start a multi container pod. # cat mc2.yaml apiVersion: v1 kind: Pod metadata: name: two-containers spec: restartPolicy: Never containers: - name: container1 image: ubuntu command: [ "/bin/bash", "-c", "

What happens to other processes when a Docker container's PID1 exits?

落花浮王杯 提交于 2020-06-24 06:08:36
问题 Consider the following, which runs sleep 60 in the background and then exits: $ cat run.sh sleep 60& ps echo Goodbye!!! $ docker run --rm -v $(pwd)/run.sh:/run.sh ubuntu:16.04 bash /run.sh PID TTY TIME CMD 1 ? 00:00:00 bash 5 ? 00:00:00 sleep 6 ? 00:00:00 ps Goodbye!!! This will start a Docker container, with bash as PID1. It then fork/execs a sleep process, and then bash exits. When the Docker container dies, the sleep process somehow dies too. My question is: what is the mechanism by which

如何提高Linux下块设备IO的整体性能?

冷暖自知 提交于 2020-05-09 21:43:32
编辑手记: 本文主要讲解Linux IO调度层的三种模式:cfp、deadline和noop,并给出各自的优化和适用场景建议。 作者简介: 邹立巍 Linux系统技术专家。目前在腾讯SNG社交网络运营部 计算资源平台组,负责内部私有云平台的建设和架构规划设计。 曾任新浪动态应用平台系统架构师,负责微博、新浪博客等重点业务的内部私有云平台架构设计和运维管理工作。 IO调度发生在Linux内核的IO调度层。这个层次是针对Linux的整体IO层次体系来说的。从read()或者write()系统调用的角度来说,Linux整体IO体系可以分为七层,它们分别是: VFS层: 虚拟文件系统层。由于内核要跟多种文件系统打交道,而每一种文件系统所实现的数据结构和相关方法都可能不尽相同,所以,内核抽象了这一层,专门用来适配各种文件系统,并对外提供统一操作接口。 文件系统层: 不同的文件系统实现自己的操作过程,提供自己特有的特征,具体不多说了,大家愿意的话自己去看代码即可。 页缓存层:负责真对page的缓存。 通用块层: 由于绝大多数情况的io操作是跟块设备打交道,所以Linux在此提供了一个类似vfs层的块设备操作抽象层。下层对接各种不同属性的块设备,对上提供统一的Block IO请求标准。 IO调度层 :因为绝大多数的块设备都是类似磁盘这样的设备

centos7下docker二进制安装

与世无争的帅哥 提交于 2020-05-04 07:47:28
问题描述:    内网离线环境下,安装docker.二进制来的还是快点,或者内网搭建yum的epel仓库! 环境:  centos7.x  docker-18.9.0 x86_64 static //二进制 解决方法: 1、download:   https://download.docker.com/linux/static/stable/x86_64/ 2、kernel ack [root@lab-210 ~]# uname -r //kerner3.10.+ centois7.x 内核都是3.10+,此举只是为了验证 3.10.0-862.el7.x86_64 3、setup docker-18.06.1-ce.tgz tar zxf docker-18.06.1-ce.tgz && mv docker/* /usr/bin/ && rm -rf docker*.tgz //解压切移动binary到 /usr/bin 注意:如果移动到别的目录有点问题,systemctl脚本启动不起来,具体原因还在寻找中 4、systemd docker.service vim /etc/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https

老白学编程

给你一囗甜甜゛ 提交于 2020-04-30 19:39:21
存储相关的Metrics disk /proc/diskstats $ cat /proc/diskstats 8 0 sda 19845 144 2468979 81307 5380 1084 181174 47385 0 19839 128640 8 1 sda1 168 0 48862 7580 10 0 4136 192 0 1151 7772 8 2 sda2 19612 144 2416997 73544 4757 1084 177038 44181 0 18997 117673 11 0 sr0 0 0 0 0 0 0 0 0 0 0 0 253 0 dm-0 19443 0 2407493 73345 5693 0 175134 58916 0 19577 132260 253 1 dm-1 206 0 7024 393 238 0 1904 8073 0 1385 8466 前3项是主设备号,次设备号和设备名称。 后面11个域的描述如下: Name units description ---- ----- ----------- read I/Os requests 完成的读请求次数 read merges requests 在IO队列中合并的IO次数,对于机械盘来讲,IO合并对性能帮助太大了, innodb设计中change buffer,double

Docker容器的安全

时光毁灭记忆、已成空白 提交于 2020-04-27 09:46:52
Docker 容器与虚拟机的区别 1.隔离与共享 虚拟机通过添加 Hypervisor 层,虚拟出网卡、内存、CPU 等虚拟硬件,再在其上建立 虚拟机,每个虚拟机都有自己的系统内核。 而 Docker 容器则是通过隔离的方式,将文件系 统、进程、设备、网络等资源进行隔离,再对权限、CPU 资源等进行控制,最终让容器之间互不影响, 容器无法影响宿主机。容器与宿主机共享内核、文件系统、硬件等资源。 2.性能与损耗 与虚拟机相比,容器资源损耗要少。 同样的宿主机下,能够建立容器的数量要比虚拟 机多。但是,虚拟机的安全性要比容器稍好, 要从虚拟机攻破到宿主机或其他虚拟机,需要 先攻破 Hypervisor 层,这是极其困难的。而 docker 容器与宿主机共享内核、文件系统等资源, 更有可能对其他容器、宿主机产生影响。 Docker 存在的安全问题 1.Docker 自身漏洞 作为一款应用 Docker 本身实现上会有代码缺陷。CVE官方记录Docker历史版本共有超过20项漏洞。 常用的 手段主要有代码执行、权限提升、 信息泄露、权限绕过等。目前 Docker 版本更迭非常快, Docker 用户最好将 Docker 升级为 最新版本。 Docker 源码问题 Docker 提供了 Docker hub,可以让用户上传创建的镜像,以便其他用户下载,快速搭 建环境

1、docker容器技术基础入门

二次信任 提交于 2020-04-26 23:39:48
Docker和传统虚拟机的区别 参考文章: https://lwn.net/Articles/531114/ 操作中的命名空间详解 https://blog.yadutaf.fr/page/2/ https://ruby-china.org/topics/22004 Docker 介绍以及其相关术语、底层原理和技术 http://tiewei.github.io/cloud/Docker-Getting-Start/ https://blog.csdn.net/zmx729618/article/details/72930474 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 主机级虚拟化 Type-I:直接在硬件平台上安装虚拟机管理器 Hypervisor ,在硬件上不需要再安装宿主机操作系统,而是直接安装Hypervisor,然后在Hypervisor上安装虚拟机; Type-II:首先在物理机上安装一个主机操作系统(HostOS),即宿主机操作系统,然后在宿主机上安装VMM(Virtual Machine Manager,虚拟机管理器,例如VMware_workstation),在VMware_workstation软件上创建虚拟机。 容器级虚拟化 Control Groups(cgroups)