容器技术

虚拟化:LXC, KVM

♀尐吖头ヾ 提交于 2019-12-07 16:42:59
一,虚拟化:LXC容器,KVM 1,相关概念 Container:容器,基于容器的虚拟化技术起源于所谓的资源容器和安全容器。 (linux:OpenVZ,linux-VServer,FreeVPS.非linux:Solaris Zones,BSD jails,CoreOS,Dejs,Dynos,Docker) LXC:linux Container. LXC开源项目(sourceforge):项目本身只是一个为用户提供一个用户空间的工具集,用来使用和管理LXC容器。 LXC真正的实现则是靠Linux内核的相关特性,LXC项目只是对此做了整合。 LXC由下列两个技术组成: 1,资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架, 可以为特定的进程组限定可以使用的资源。 2,LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。 2,LXC管理 用户空间两类管理工具集: liblxc,libvirt libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。 2.1,liblxc工具集: 1,liblxc 工具包: yum install lxc (lxc

docker lxc cgroup namespace简述

余生长醉 提交于 2019-12-07 16:39:38
docker、lxc、cgroup、namespace是最近比较的技术。先了解一下他们分别是什么,然后说一下他们怎么用,具体实现机制以后再单独研究。 docker是lxc的管理器,lxc是cgroup的管理工具,cgroup是namespace的用户空间的管理接口。namespace是linux内核在task_struct中对进程组管理的基础机制。 再详细点说: docker是用go来实现的,自动化了对lxc的管理过程,能够自动在线下载相应的发行版本的rootfs。 lxc可以直接chroot到任意的系统的rootfs上并通过cgroup的限制机制来控制容器内系统的资源占有率。 cgroup通过配置文件或者命令配置后,限制相应进程或一组进程使用的系统资源。 很明显,在lxc以上已经借助于chroot机制在一个限制的容器中运行一个完整的系统了,这样多个不通过虚拟化技术的新系统就在特定的占有物理资源的限制上运行起来。据说运行效率直逼实际机器。 下面说一下用法吧,先从下往上说: cgroup 步骤: 在文件系统上建立层次结构 挂载文件系统并关联子系统 建立控制组 设置控制参数 将进程加入到控制组 通过/etc/cgconfig.conf配置或者cgroup-bin的相关指令来配置: mount { cpuset = /sys/fs/cgroup/cpuset; momory = /sys

docker学习(二)

萝らか妹 提交于 2019-12-07 16:37:25
一、Docker 镜像 Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是Docker Hub 公共注册服务器中的仓库)。 1.获取镜像 可以使用 docker pull 命令来从仓库获取所需要的镜像。 下面的例子将从 Docker Hub 仓库下载一个 java 操作系统的镜像。 下载过程中,会输出获取镜像的每一层信息。 该命令实际上相当于 $ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,即从注册服务器 registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。 有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。 从其它仓库下载时需要指定完整的仓库注册服务器地址。例如 $ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 Pulling dl.dockerpool.com:5000/ubuntu ab8e2728644c: Pulling dependent layers 511136ea3c5a: Download complete 5f0ffaa9455e: Download complete a300658979be: Download

LXC、LXD、Docker的区别与联系(by quqi99)

空扰寡人 提交于 2019-12-07 16:36:45
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔离,linux namespace包括:mount namespace, uts namespace, ipc namespace, pid namespace, network namespace, user namespace六种,用于将mount点、UTS(hostname, domain name)、IPC资源、进程、网络、用户等六种资源做到进程级别的隔离。容器作为一个普通的进程,使用namespace技术作隔离。 pivot_root根文件系统切换。mount –bind /etc /tmp/test/etc方式允许从任何其他位置访问任何文件或目录,但是其他用户仍然能看到这些mount点,而mount namespace可以做到mount点在各个进程之间隔离。尽管如此,目前没有对文件/目录做进程间隔离的namespace,所以有必要制作根文件系统再采用pivot_root命令在容器内替换为这个根文件系统(注:chroot只是在指定的根文件系统下运行命令)。 cgroups技术用来做资源限制,这些资源包括CPU、内存、存储、网络等。

【Docker学习之四】Docker自定义容器镜像

允我心安 提交于 2019-12-07 15:02:21
环境   docker-ce-19.03.1-3.el7.x86_64   centos 7 一、使用已有容器创建镜像-docker commit 1、查看本地已有镜像 [root@node105 ~ ]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 5a3221f0137b 9 days ago 126MB hello -world latest fce289e99eb9 7 months ago 1 .84kB training /webapp latest 6fae60ef3446 4 years ago 349MB 查看本地正在运行的容器 [root@node105 ~]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15ff843a3404 training /webapp " python app.py " 21 minutes ago Up 21 minutes 0.0 . 0.0 : 32768 -> 5000 / tcp stoic_moore db8b3e2f1c64 nginx " nginx -g 'daemon of… " About an hour ago Up 36

Docker应用之镜像

本小妞迷上赌 提交于 2019-12-07 14:58:01
一、Docker包括三个基本概念 1、镜像(Image):Docker镜像是一个只读模板,例如一个镜像可以包含完整的Linux系统环境,里面仅仅安装了Apache或用户其他应用程序;镜像可以用来创建Docker容器,每一次使用命令run一个镜像就是创建一个容器;Docker提供了一个很简单的机制来创建或更新现有镜像,用户甚至可以直接从别处下载一个镜像使用 2、容器(Container):Docker利用容器来运行应用;容器是从镜像创建的运行实例,它可以被启动、开始、停止、删除,每个容器都是相互隔离的,保证安全的平台;可以把容器看做是一个简易版的linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序;注意,镜像是只读的,容器在启动的时候创建一层可写层作为最上层 3、仓库(Repository):仓库是集中存放镜像文件的场所,有时候会把仓库注册服务器(Registry)混为一谈,严格说仓库注册服务器存放在多个仓库,每个仓库又包含多个镜像,每个镜像有不同的标签(tag);仓库分为公开仓库和私有仓库,最大的公开仓库是Docker Hub,用户可以在本地网络创建私有仓库;用户可以通过push将镜像上传到公开或私有仓库,或者通过pull从公开或私有仓库下载镜像 二、镜像   Docker运行容器前需要本地存在对应的镜像,如果镜像不存在

docker教程,dockerfile教程

南笙酒味 提交于 2019-12-07 14:47:42
进大厂,身价翻倍的法宝来了! 主讲内容:docker/kubernetes 云原生技术,大数据架构,分布式微服务,自动化测试、运维。 视频地址: ke.qq.com/course/419718 课程简介: 第一章 熟悉Linux环境 1、Win10安装Ubuntu18.04双系统 2、熟悉Linux常用工具和命令 第二章 熟悉Docker 3、安装配置Docker 4、Docker命令实践 5、Dockerfile文件编写 ​​​​​​​ 6、常用镜像部署 ​​​​​​​ 第三章 熟悉Kubernetes ​​​​​​​ 7、kubernetes架构和部署 ​​​​​​​ 8、熟悉kubectl命令使用 ​​​​​​​ 9、k8s应用部署实践(上) ​​​​​​​ 10、k8s应用部署实践(下) ​​​​​​​ 第四章 熟悉Helm ​​​​​​​ 11、Helm安装配置 ​​​​​​​ 12、熟悉Helm应用书写规则 ​​​​​​​ 13、编写自己的Helm应用 全栈工程师开发手册 (作者:栾鹏) 数据架构师全解 docker安装请参考:https://blog.csdn.net/luanpeng825485697/article/details/80862581 ubuntu可以使用下面的命令 apt-get update apt-get install docker.io

Docker与Dockerfile极简入门文档

不羁的心 提交于 2019-12-07 14:35:44
引言 分享docker技术时写的一篇文档,图全部是自己画的。 docker的安装 docker的安装我就不多说,建议按照docker的官方安装文档一步一步来 https://docs.docker.com/install/ 。需要注意的是,Docker的windows版本只支持Win10的专业版和企业版,像我们普通学生用的Win10家庭版它是不支持的,但是docker官方也提供一个docker toolbox(下载地址: https://docs.docker.com/toolbox/toolbox_install_windows/ ),通过它可以在windows上运行docker,只不过这个docker toolbox是基于一个linux虚拟机运行的,所以性能肯定是不如原生的好。 安装好docker后,不要忘了用 service docker start 或者 systemctl start docker (如果是centos7以上版本的话)启动docker的服务 配置docker不需要sudo 刚装好的docker每次使用docker命令都需要sudo,比较麻烦,可以通过以下命令省去sudo: sudo usermod -aG docker 当前用户名 然后一定要记得重新登录该用户才能生效。 docker核心概念 要理解docker,最核心的是理解三个概念,分别是:仓库

为 Java EE 应用提供的 9 种 Docker 方法

孤人 提交于 2019-12-07 14:34:59
原文地址: http://www.admin10000.com/document/6116.html 你想在 Java EE 应用中使用 Docker 吗?   一个典型的Java EE应用程序由应用服务器(例如: WildFly )和数据库(例如:Mysql)组成的。除此以外,你也许还需要一个前端负载:例如Apache,用于多台应用服务器的负载均衡,缓存:例如Infinispan,可以用于提高应用的整体性能。消息中间件:例如 ActiveMQ ,可以用于处理队列。缓存和消息组件可以用于集群的进一步扩展。   本文将先讲解一个简单 Docker 容器配置方法:包括应用服务器和数据库。接下来将讲解几个高级应用方法:包括前端负载、缓存、消息中间件和集群。   让我们开始吧!   如果你的机器之前没有安装过Docker,那么首先你需要安装Docker。你可以使用是最新版本的linux,它已经集成了Docker,或者使用安装命令: sudo apt-get install docker-io 在Mac和windows系统上,则需安装 boot2docker ,它是一个微内核的linux虚拟机包含Docker主机。同时你需要配置ssh秘钥和证书。   幸运的是, Docker Machine . 使用非常简单。你从头开始到创建完成一个Docker主机只需要一条指令

使用docker快速搭建运行环境

时光毁灭记忆、已成空白 提交于 2019-12-07 14:31:30
最近在搭建虚拟机上的运行环境,最开始是按照传统方法一个一个安装软件,一大堆软件装下确实是挺费时间的。现在容器技术非常的火,于是就去看了一下docker,完全能够满足我的需求,省时省力, 何乐而不为? 什么是docker? 简单的说,Docker是一个基于进程容器(Processcontainer)的轻量级VM解决方案。大概的示意图如下(左边是传统VM,右边是docker): 传统的虚拟机是虚拟出硬件,然后在虚拟的硬件上安装操作系统及各种上层应用。Docker则是共享操作系统,在操作系统上层虚拟出独立的容器,每个容器是一个独立的沙箱,拥有自己的文件系统及运行时。 segment上的大神 吴yh坚 对容器有个比较透彻的说明,感兴趣的可以读一下下文: https://segmentfault.com/a/1190000006245007 几个docker常用的命令 查询docker镜像 $ docker search XXX 下载docker镜像 docker pull XXX 下载后默认是放到了:/var/lib/docker 查看已下载的docker镜像 docker images 运行docker容器 docker run XXX 查看正在运行的docker容器 docker ps 停止正在运行的容器 docker stop XXX 删除容器 docker rm -f XXX