关于Docker你不知道的事——什么是Docker

(提示:对Docker感兴趣的朋友可以加我微信:ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里。)

  之前谈虚拟化历史就说过,Docker实际是源自于dotCloud的一个项目,在2013年开源后就飞速发展。我们今天要谈的是,什么是Docker?

Docker-engine

  通常我们提Docker的时候,都指的是Docker-engine,docker-engine就是运行在主机上的一个守护进程,类似于于Hyper-V的管理程序。Docker-engine是C/S的架构,daemon就是它的server,我们通常使用的docker命令有两层功能,一层是作为daemon运行,一层是作为client运行。daemon可以监听在某一个socket端口上,也可以监听到unix本地socket之上,而client也可以操作本机的daemon和远程的daemon。当操作远程daemon的时候,需要在client后面跟IP、端口以及TLS证书。

容器是什么

  谈到容器,很多人会把它当成是一个主机。这其实是错误的。容器在主机上就是一个进程,但是它有不同于普通的进程。普通的进程之间是共用的CPU、内存、网络、PID等资源,而容器是隔离的进程,它运行在一个沙盒之中,同时还能限定它所使用的资源。这主要借助于Linux Kernel的CGroup和Namespace技术,CGroup可以控制进程使用多少资源,如:CPU、内存、磁盘IO速率等,Namespace用来隔离资源,如:PID、网络、主机名等。正因为如此Docker最初原生只支持Linux,后来所谓的跨平台支持也只是通过VM来远程操控。不过Windows Server 2016已经加入了对Docker的原生支持。

怎么运行

  一个进程肯定少不了对于内容的需求,就好比一台电脑不能没有硬盘。容器的内容就是它的Layered FS,这个也可以说是Docker创新的一方面。它使用了Copy-on-right的技术,将文件系统进行了分层,可以充分的复用公共部分。镜像其实很像以前我们安装操作系统的Ghost镜像,使用户能够快速的安装它需要的软件。容器运行时,就会装载镜像文件,以及相关的环境,同时在最上层加入一个可写层。

容器能解决什么问题

  由于容器的轻量化,容器能解决的根本问题就是提升效率和速度。Docker 宣称的是Build, Ship and Run anywhere,只是从速度、效率和可移植性来讲的。但是,你有没有想过,云计算一直要解决的是什么问题——水平扩展,水平扩展是不是就需要很多的结点。对了,Docker会成为云计算的基础架构,这才是docker这么火的根本原因。说到具体的用途,我总结了一些:

  • 标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
  • 节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
  • 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
  • 节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
  • 方便持续集成,通过与代码进行关联使持续集成非常方便;
  • 可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。
时间: 2024-09-20 00:45:47

关于Docker你不知道的事——什么是Docker的相关文章

关于Docker你不知道的事——虚拟化历史

(提示:对Docker感兴趣的朋友可以加我的微信:ghostcloud2016,我会把您加到我们的一个Docker爱好者微信群中,在这个群中,有来自五湖四海的Docker爱好者,我们共同交流,共同学习!) 整个虚拟化技术的发展有超过半个世纪的历史.虚拟化一般分为硬件级虚拟化(hardware-level-virtualization)和操作系统级虚拟化(os-level-virtualization).硬件级虚拟化是运行在硬件之上的虚拟化技术,它的管理软件也就是我们通常说的hypervisor或

Docker Swarm已死!Docker Swarm万岁!

Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元.Docker的掌舵者Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力. 把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个附加功能,你

Docker Swarm 已死!Docker Swarm 万岁!

Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元.Docker的掌舵者 Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力. 把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个附加功能,

《循序渐进学Docker》——1.2 Docker的结构与特性

1.2 Docker的结构与特性 通过上一小节的介绍,大家对Docker有一个初步的了解.这一节,再来聊一下Docker的组织结构. 1.2.1 Docker构成 如果把Docker当作一个独立的软件来看,它就是用Golang写的开源程序,采用C/S架构,包含Docker Server和Docker Client, 源代码托管在https://github.com/docker/docker上. 如果把Docker看作一个生态的话,它主要由两部分组成:Docker仓库和Docker自身程序.拿i

Docker安装和基础用法 Docker入门教程第二篇_docker

本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 1. 安装 1.1 在 Ubuntu 14.04 上安装 Docker 前提要求: 内核版本必须是3.10或者以上 依次执行下面的步骤: sudo apt-get update sudo apt

深入浅出Docker(一):Docker核心技术预览

深入浅出Docker(一):Docker核心技术预览 [编者按]Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕. 1. 背景 1.1. 由PaaS到Container 2013年2月,前Gluster的CEO Ben Golub和dotCloud的CEO Solo

[Docker系列·2] 搭建基于Docker的Nginx服务器

docker命令别名 ~/.bashrc # .bashrc alias d="sudo docker" docker的nginx工作目录 /home/erichan/d/nginx docker的Dockerfile # Version: 0.0.1 FROM feuyeux/ssd MAINTAINER Eric Han "feuyeux@gmail.com" RUN apt-get update RUN apt-get -yq install nginx RU

Moving to Docker(一)为什么选择Docker

本文讲的是Moving to Docker(一)为什么选择Docker,[编者的话]本文是<Moving to Docker>系列的第一篇文章,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训.本文主要介绍了Touchware为什么要从Heroku迁移到Dokku,以及为什么最后又投靠了Docker. 本文是迁移至Docker系列的第一篇,这个系列介绍了我所在的公司是怎么把基础设施从PaaS迁移到Docker上的.如果你对基础已经很了解了,可以直接看本文

在Docker Swarm模式下,Docker应用如何实现服务发现

本文讲的是在Docker Swarm模式下,Docker应用如何实现服务发现[编者的话]无论容器是否存在于集群之中,本文将告诉我们如何可靠地连接到它.  [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述和架构.部署和核心机制分析.进阶篇--Kubernetes调工作原理及源码分析等. 当我们第一次考虑在生产环境中使用容器时,常常会面对一个问题:当容器运行在一组服务器集群上时,无论它在哪个服务器上,如何让其他实体(人或应用程序)可靠地连接到它.  一定程度上,