容器学习 之 容器的概念(一)
容器本身
- 容器 runtime
runtime 是容器真正运行的地方,相当于Java程序里面的JVM
lxc、runc 和 rkt 是目前主流的三种容器 runtime:
- lxc 是 Linux 上老牌的容器 runtime。
- runc 是 Docker 自己开发的容器 runtime,也是现在 Docker 的默认 runtime。
- rkt 是 CoreOS 开发的容器 runtime。
- 容器管理工具
- lxd 是 lxc 对应的管理工具。
- runc 的管理工具是 docker engine。docker engine 包含后台 deamon 和 cli 两个部分。
- rkt 的管理工具是 rkt cli。
- 容器定义工具
- docker image 是 docker 容器的模板,runtime 依据 docker image 创建容器。
- dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker image。
- Registry 相当于一个仓库,存放image。
容器编排
基于容器的应用一般会采用微服务架构。在这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过 API 对外提供服务。为了保证应用的高可用,每个组件都可能会运行多个相同的容器。这些容器会组成集群,集群中的容器会根据业务需要被动态地创建、迁移和销毁。
大家可以看到,这样一个基于微服务架构的应用系统实际上是一个动态的可伸缩的系统。这对我们的部署环境提出了新的要求,我们需要有一种高效的方法来管理容器集群。而这,就是容器编排引擎要干的工作。
所谓编排(orchestration),通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机的组合成微服务应用,实现业务需求。
容器编排工具有docker swarm,kubernetes,mesos等:
- docker swarm 是 Docker 开发的容器编排引擎。
- kubernetes 是 Google 领导开发的开源容器编排引擎,同时支持 Docker 和 CoreOS 容器。
- mesos 是一个通用的集群资源调度平台,mesos 与 marathon 一起提供容器编排引擎功能。
容器管理平台
容器管理平台是架构在容器编排引擎之上的一个更为通用的平台。通常容器管理平台能够支持多种编排引擎,抽象了编排引擎的底层实现细节,为用户提供更方便的功能。
Rancher 和 ContainerShip 是容器管理平台的典型代表。
基于容器的 PaaS 为微服务应用开发人员和公司提供了开发、部署和管理应用的平台,使用户不必关心底层基础设施而专注于应用的开发。
Deis、Flynn 和 Dokku 都是开源容器 PaaS 的代表。
容器涉及到的技术
- 容器网络
容器的出现使网络拓扑变得更加动态和复杂。用户需要专门的解决方案来管理容器与容器,容器与其他实体之间的连通性和隔离性。
docker network 是 Docker 原生的网络解决方案。
- 服务发现
动态变化是微服务应用的一大特点。当负载增加时,集群会自动创建新的容器;负载减小,多余的容器会被销毁。容器也会根据 host 的资源使用情况在不同 host 中迁移,容器的 IP 和端口也会随之发生变化。
在这种动态的环境下,必须要有一种机制让 client 能够知道如何访问容器提供的服务。这就是服务发现技术要完成的工作。
etcd、consul 和 zookeeper 是服务发现的典型解决方案。
- 监控
docker ps/top/stats 是 Docker 原生的命令行监控工具。除了命令行,Docker 也提供了 stats API,用户可以通过 HTTP 请求获取容器的状态信息。
sysdig、cAdvisor/Heapster 和 Weave Scope 是其他开源的容器监控方案。
- 数据管理
容器经常会在不同的 host 之间迁移,如何保证持久化数据也能够动态迁移,是 Flocker 这类数据管理工具提供的能力。
- 日志管理
日志为问题排查和事件管理提供了重要依据。
docker logs 是 Docker 原生的日志工具。而 logspout 对日志提供了路由功能,它可以收集不同容器的日志并转发给其他工具进行后处理。
- 安全性
OpenSCAP 能够对容器镜像进行扫描,发现潜在的漏洞。
容器学习 之 容器的概念(一)相关推荐
- 容器学习 之 容器命令(八)
create 创建容器 docker create 创建的容器处于 Created 状态. start 运行容器 pause 暂停容器 unpause 取消暂停继续运行容器 有时我们只是希望暂时让容器 ...
- Docker容器学习梳理-容器时间跟宿主机时间同步
在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- 容器学习 之 容器的组件(三)
Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry仓库 Docker 容 ...
- 容器学习 之 容器访问外部网络(十四)
容器访问外部世界 docker host 是可以访问外网的. 容器也能访问外网 为什么容器能够访问到外网呢?我们先来查看iptables的规则 -A POSTROUTING -s 172.17.0.0 ...
- 容器学习 之 容器的网络类型(十二)
Docker 安装时会自动在 host 上创建三个网络,我们可用 docker network ls 命令查看: root@ubuntu:/myregistry/docker/registry/v2/ ...
- Docker容器学习梳理--日常操作总结
使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands:attach Attach t ...
- Docker容器学习(一)
文章目录 前言: 一.Docker 概述: 1.Docker 简介: 2.对比传统虚拟机: 二.基本概念: 1.镜像(image): 2.容器(container): 3.仓库(repository) ...
- 不会和容器一起启动_一起学习docker05-docker容器
一起来学docker系列: 一起学docker-可视化管理01-Portainer 一起学docker-可视化管理02-Rancher 一起学习docker01-docker简介和安装 一起学习doc ...
- 容器学习Day09-理解容器镜像
目录 前言 一.理解容器镜像 1.什么是容器镜像? 2.容器镜像结构 3.容器镜像技术实现 二.镜像仓库 1.Repository 2.Registry 三.镜像的拉取和删除 1.查找镜像 2.拉取镜 ...
最新文章
- 使用Postgrest快速创建数据库的OpenAPI接口
- 数据结构 (计算机存储、组织数据方式)
- Linux从入门到精通——磁盘与目录的容量(du、df)
- java jre 1.6 32位_jre1.6官方下载-java jre1.6(虚拟机运行环境)下载官方版(含32位/64位)-当易网...
- Bootstrap-CSS-表单
- SQL Server 2008支持将数据导出为脚本
- java 男女 相邻交换 队形_(Java实现) 洛谷 P1091合唱队形
- MD5生成与校验(Linux/UNIX/Windows)
- Rhythmbox中mp3中文乱码解决
- Python print() 函数,在同一行打印
- 什么是UID、UED、UXD、IXD、UCD、IAD,看这篇就足够了
- node.js共享输液检测系统毕业设计源码131105
- 微信上传鸿蒙了吗,网上传来了众多有关鸿蒙系统的消息 , 希望大家不要误会!...
- java基于ssm开发的弹幕视频网站源码
- Google 百度 图标收藏(二)
- 关于组长/leader的一些反省和自我批判
- P2P式纳斯达克:小蚁区块链或将带来怎样的新金融?
- 实验吧-天下武功唯快不破 Writeup
- 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...
- 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及 Python 实现
热门文章
- 数据库服务器(SQL SERVER)的安全设置
- 第08讲:解析无所不能的正则表达式
- 用Python实现归并排序
- 对话MPEG创始人Leonardo Chiariglione: MPEG精神将在MPAI中延续
- 音视频技术开发周刊 | 185
- WebRTC基本介绍
- 《Hadoop权威指南》第三章 Hadoop分布式文件系统
- 腾讯TDSQL提出三个“数据库之问”,数据库技术未来重点在哪?
- 腾讯移动分析系统揭密
- unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass