Docker入门系列1:简介
可以实现快速部署。
比如一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要:
- 资源隔离:比如限制应用最大内存使用量,或者资源加载隔离等。
- 低消耗:虚拟化本身带来的损耗需要尽量的低。
我们不可能在一台机器上开 500 个虚拟机,虽然可以在资源隔离方面做的很好,但这种虚拟化本身带来的资源消耗太严重。
另一个方面,我们可以考虑使用语言级别沙箱,虽然这种「虚拟化」本身的消耗可以低到忽略不计,但是资源隔离方面绝对是噩梦,比如你打算在一个 JVM 里隔离内存的使用。
而 Docker 很好的权衡了两者,即拥有不错的资源隔离能力,又有很低的虚拟化开销。
做PaaS(平台即服务)的也有,把docker当中一个小型虚拟机器使用。
简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs); 目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离; 它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来。
Docker相对于VM虚拟机的优势十分明显,那就是轻量和高性能和便捷性。
快:管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的。
Docker是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。
Docker 由下面这些组成:
- Docker 服务器守护程序(server daemon),用于管理所有的容器。
- Docker 命令行客户端,用于控制服务器守护程序。
- Docker 镜像:查找和浏览 docker 容器镜像。它也访问这里得到:https://index.docker.io/
Docker 之所以有用,是因为把代码从一个机器迁移到另一个机器经常是困难的。它尝试去使得软件迁移的过程变得更加可信和自动化。Docker 容器可以移植到所有支持运行 Docker 的操作系统上。
Docker 通过不仅仅打包应用程序,也打包应用程序的依赖环境来解决这个问题。
到现在为止,要把程序可靠地移植的唯一选择是虚拟机(Virtual Machines,VMs)。虚拟机现在已经很常见了,但虚拟机是非常低级,它提供的是完整的操作系统环境。虚拟机的问题是,迁移的时候太大了。它们包含了大量类似硬件驱动、虚拟处理器、网络接口等等并不需要的信息。 虚拟机也需要比较长时间的启动,同时也会消耗大量的内存、CPU 资源。
Docker 相比起来就非常轻量级了。运行起来就和一个常规程序差不多。这个容器不仅仅运行快,创建一个镜像和制作文件系统快照也很快。它可以在 EC2, RackSpace VMs 那样的虚拟环境中运行。事实上,在 Mac 和 Windows 系统上使用 Docker 的更好方式是使用 Vagrant。Docker 的初衷其实是发挥类似 VM 的作用,但它启动得更快和需要更少的资源。
Docker 比起 Vagrant 来说,运行起来会更加省资源。Vagrant 提供的环境其实是基于 Virtual Box 提供的虚拟机。
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
还可以在Windows或Mac OS X中,使用Vagrant在VirtualBox的虚拟机里安装。
艺搜参考
https://github.com/docker/docker
Docker入门系列1:简介的更多相关文章
- Docker入门系列(一):目标和安排
Docker入门系列(一) 这个系列的教程来源于docker的官方文档,此文档的目的在于一步一步学习docker的使用方法. 这一系列的教程有如下几篇文档: docker安装启动 构建第一个docke ...
- Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...
- saltstack之基础入门系列文章简介
使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文 ...
- Docker入门系列3:使用
入门 首先强烈建议玩一遍官方的入门教程,Interactive commandline tutorial,下面是答案: 查看版本:docker version 搜索Image:docker searc ...
- Docker入门系列之五:15个 Docker 命令
在这篇文章中,我们将学习15个Dockers CLI命令.如果你还不了解Docker,请查看这个系列的其他部分进行学习,Docker概念,生态系统,Dockerfile,Docker镜像. Docke ...
- Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像
实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始. 首先使用命令docker ps确保当前没有正在运行的Docker实例. 运行命令docker run -it nginx: 然 ...
- Docker入门系列之一:在一个Docker容器里运行指定的web应用
实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始. 首先使用命令docker ps确保当前没有正在运行的Docker实例. 运行命令docker run -it nginx: 然 ...
- Docker入门系列2 安装
可以从 Docker 社区直接下载可用的模版或镜像. Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多. 其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Do ...
- docker入门1---docker的简介和安装
Tomxin7 Simple, Interesting | 简单,有趣 什么是Docker? 简介: Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发 ...
随机推荐
- HttpClient 简介与使用
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的 URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而 ...
- Linux Redhat7 开机启动python脚本
cd /usr/lib/systemd/system touch proxy.service ##################################################### ...
- 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...
- 提升开发效率的一款mybatis开发神器
文末附有完整案例的代码内容!! 以前在开发的时候,使用mybatis的时候,经常都需要先配置xml映射文件,然后每条sql操作都需要自己进行手动编写,对于一些复杂的sql这么来操作确实有必要,但是如果 ...
- linux查看hostname以及修改hostname
查看hostname : hostname 修改hostname : hostnamectl set-hostname master (比如要修改为master) 修改完重启生效 : ...
- Meet Dgraph — an open source, scalable, distributed, highly available and fast graph databas
https://dgraph.io/ Meet Dgraph — an open source, scalable, distributed, highly available and fast gr ...
- IOS开发self.的用法总结
如果声明的是retain类型的,然后使用self.的话此时引用计数会加1,变成1,如果同时又使用了alloc,那么引用计数又加一变成了2,那么如果只是release一次的话就会内存泄漏. 这种情况下的 ...
- 立体3D方式 【转】
目前为止,至少有四种普遍使用的立体3D传输格式,分别称为frame sequential(帧连续),frame packing(帧封装),side-by-side(并排),以及checkerboard ...
- 访问C指针的指针
#include <stdio.h> #include <stdlib.h> int main(int argc,char **argv){ void* vp; void** ...
- 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...