Pass云Docker介绍

1.Docker 简介

Docker是一个开源可以将任何应用包装在”LXC容器”中运行的工具。如果说VMware,KVM包装的虚拟机,Docker包装的是应用。是一个实至名归的PaaS。

当应用被打包成Docker Image后,部署和运维就变得极其简单。可以使用统一的方式 来下载,启动,扩展,删除,迁移。

Dock可以用来:

  • 自动化打包和部署任何应用
  • 创建一个轻量级私有PaaS云
  • 搭建开发测试环境
  • 部署可扩展的Web应用

Docker是开源的,可以在GitHub上访问其代码,提供Restful接口。他的贡献者是一个非常流行的PaaS云提供商 https://dotcloud.com/

PaaS 的核心价值
遗失的方向 - 绝大部分应用竟然不能无缝迁移到主流PaaS上

云计算发展多年,分为IaaS,PaaS和SaaS。其中PaaS(平台即服务)最为不愠不火。笔者因为,最大的原因是PaaS给人(开发,运维,老板)带来的价值不够多,私有PaaS门槛高!最大的问题在于绝大部分应用竟然不能无缝迁移到PaaS上。

Heroku是最流行的公有PaaS云。很廉价好用,可是大部分应用都无法部署。每个应用只能监听一个HTTP端口,应用之间不能交互。他可以为你自动扩展和负载均衡,但其实没得选择,只要使用Heroku就必须接受限制。好歹Heroku支持绝大部分平台如Java,Python。相比之下,GAE更甚,只支持三个平台,不能访问文件系统,也不能启动子进程。

CloudFoundry是比较流行的私有PaaS云。限制和Heroku一样多,部署比较复杂。为此他甚至有一个量身定制的部署工具BOSH。有多难用,用过的人都知道。这个不能怪开发人员,他定义的PaaS本来就这么复杂。

PaaS要实现开发人和运维人的梦
开发人的梦 – 自在的运行环境,无限的资源

开发人希望专注于程序逻辑。有自由自在的运行环境,有丰富的外部资源如各种中间件。至少不要为什么 端口监听数目,通信协议限制 这些事情所困扰。

运维人的梦 – 没有故障和重复的事,减少等待

运维天天处理故障,如果千千万应用都能以同样的方式部署,运维。那么故障的处理就简单多了,重复的事情也会变少。下载部署,安装依赖,这些事情都太过繁琐耗时了。

Docker功能

Docker可以让开发和运维都变得简单。

开发者不必要像使用一般PaaS一样在充满着限制的条件下开发应用,可以就如同平常一样,自由的使用各种资源。老子说“太上下知有之 ,其次誉之,其次侮之”。Dock对于开发者就是“下知有之”的状态。

爽的人是运维。要使用Docker,需要在机器上安装Docker Engine,

  • 创建一个Container。实际上是一个Linux Container,Docker会将网络,存储这些事情都配好。
  • 下载应用并安装。比如可以用sudo apt-get install mysql-server 来安装一个MySQL。并配置一些参数什么的。
  • 打包上传Image。Docker可以将这个Linux Container打包成Image,启动脚本也在其中。并上传至Image Registry中。这个Image仅仅包括你修改的增量部分,所以体积比较小。
  • 一条命令跑起来。使用Docker Run 一条命令可以从Image Registry中下载Image 并跑起来。

需要重启的时候,只要重启Container。需要迁移的时候,只要迁移Container。一切干干净净。

PaaS,IaaS术业有专攻

IaaS普遍使用虚拟机,开销较大。Docker明显更轻量。笔者认为IaaS和PaaS各有专攻,PaaS去专注于安全级别的隔离是没有意义的,IaaS也不应该去感知到应用。一个公有云中,可以让每个租户使用不同的虚拟机,虚拟网络来做到安全和资源上的隔离。再通过PaaS统一运维,管理计算资源。

没有必要让每个应用都专享一台虚拟机,这样开销太大。但在安全敏感的环境中,每个租户使用不同的虚拟机是合理的。

使用Docker在线尝试

使用Docker最便捷的方式莫过于 在线尝试: http://www.docker.io/gettingstarted/#

完成了这个在线的教材,相信你对Docker已经基本玩转了。

在Ubuntu中安装Docker

现在Docker支持两个Ubuntu版本:

  • Ubuntu Precise 12.04 (LTS) (64-bit)
  • Ubuntu Raring 13.04 (64 bit)

有两个依赖

  • Linux kernel 3.8 (read more about Kernel Requirements)
  • AUFS 文件系统

所以需要确认下您的操作系统,安装依赖并重启:

  1. # Add the PPA sources to your apt sources list.
  2. sudo apt-get install python-software-properties && sudo add-apt-repository ppa:dotcloud/lxc-docker
  3. # Update your sources
  4. sudo apt-get update
  5. # Install, you will see another warning that the package cannot be authenticated. Confirm install.
  6. sudo apt-get install lxc-docker

安装Docker并重启:

  1. # Add the PPA sources to your apt sources list.
  2. sudo apt-get install python-software-properties && sudo add-apt-repository ppa:dotcloud/lxc-docker
  3. # Update your sources
  4. sudo apt-get update
  5. # Install, you will see another warning that the package cannot be authenticated. Confirm install.
  6. sudo apt-get install lxc-docker

使用Docker,下载一个Ubuntu Image,并创建一个Container,在其中运行Bash

  1. # download the base ‘ubuntu’ container and run bash inside it while setting up an interactive shell
  2. sudo docker run -i -t ubuntu /bin/bash
  3. # type ‘exit’ to exit

成功,你已经玩转Docker了!!

Docker Run的时候发生了什么?

当用户执行Docker run的时候,发生了这些事情:

  • Docker CLI 调用 Docker Engine的Restful API。默认情况下,Docker  Engine是监听在一个Unix Socket上的,当然也可以监听在TCP端口上。
  • 从docker index下载一个Ubuntu Image。docker index是一个荟萃Docker Image的地方,就像一个Repository.你也可以构建自己的私有Repository。
  • 分配文件系统。文件系统是AUFS,这是一种“增量文件系统”,你做的修改都可以以增量的方式保存。因此Docker Image可以很小。
  • Mount文件系统
  • 创建网络端口。Docker使用Linux Bridge和Linux Network NameSpace来配置网络。
  • 配置IP地址。给刚刚创建的虚拟网卡配一个内部IP。这个IP不重要,因为Docker是通过静态NAT来对外保留TCP/UDP端口的。
  • 在LXC中执行命令,这个例子中命令就是 “/bin/bash”
  • 截取“/bin/bash”的输入输出流到Terminal,和你交互

Dock详解在Docker中运行Redis

创建一个Docker Container

  1. sudo docker run -i -t ubuntu /bin/bash

复制代码

安装Redis .

  1. apt-get update
  2. apt-get install redis-server
  3. exit

拍个快照,创建你自己的Docker Redis Image

  1. docker ps -a  # grab the container id (this will be the first one in the list)
  2. docker commit <container_id> <your username>/redis

运行Redis。-d 是指后台运行,使用你刚刚创建的Image。

  1. sudo docker run -d -p 6379 <your username>/redis /usr/bin/redis-server

使用redis-cli访问

  1. sudo docker ps  # grab the new container id
  2. sudo docker inspect <container_id>    # grab the ipaddress of the container
  3. redis-cli -h <ipaddress> -p 6379
  4. redis 10.0.3.32:6379> set docker awesome
  5. OK
  6. redis 10.0.3.32:6379> get docker
  7. “awesome”
  8. redis 10.0.3.32:6379> exit

文件系统

一般来说,要Linux需要两种文件系统

  • boot file system (bootfs)
  • root file system (rootfs)

bootfs包含有bootloader。用户从来不会更改bootfs。事实上,当机器启动结束后,kernel会卸载掉这个bootfs。

rootfs就是我们通常看到了Linux文件目录,包括 /dev, /proc, /bin, /etc,/lib, /usr, 和/tmp等等。不同的Linux发行版的rootfs是不一样的,软件包结构也是不同的。Docker通过管理rootfs,可以在同时运行多个Linux发行版。

当传统Linux启动的时候,rootfs是只读的,检查完整性后会转化成可读写状态。

当Docker挂载rootfs的时候,也是只读的。但是他并没有把它转化为可读写状态,而且在其上使用union mount 来加一层,创建一个可读写的文件系统。原理的rootfs还是只读的,数据被写入新的空间。Docker称之为”层”,数据可以这样一层一层叠加起来。

最初的时候,最顶层中什么数据也没有,当进程创建修改文件的时候,数据就会保存在最顶层。底层的文件系统没有丝毫改变。

当导出Image的时候,其实就是导出最顶层而已。

由于底层的只读的,多个Docker Container可以共享,提高的文件系统的使用效率。

Docker生态环境

Docker是开源的,提供完善的Restful接口,设计简洁,直戳痛点。但是因此比较简单,没有华丽的功能。凤栖梧桐,以Docker为树干,衍生出许多优秀的项目。

  • dokku 100行BASH的微Heroku。包含了一个PaaS的基本功能
  • shipyard Docker管理界面,提供多Host,创建Container,查看Image等功能
  • openstack-docker Docker和OpenStack集成,可以使用Nova和Glance来控制
  • jiffylab教学用Python和Unix Shell平台
  • BYO SAAS Memcached as a Service
  • Dockerui Docker管理界面

<ignore_js_op> 
                                                       dokku
      

时间: 2024-08-26 15:57:53

Pass云Docker介绍的相关文章

最全 Docker 介绍与教程,一文全掌握

最全 Docker 介绍与教程,一文全掌握2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发. 最全 Docker 介绍与教程,一文全掌握一.环境配置的难题 最全 Docker 介绍与教程,一文全掌握软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户

Docker介绍及安装

Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app).几乎没有性能开销,可以很容易地在机器和数据中心中运行.最重要的是,他们不依赖于任何语言.框架或包括系统.更详细的介绍可以看下<5分钟弄懂Docker>. Docker安装 这里的安装环境为Centos6.4,其他系统的安装请参考这里. 首先

氚云平台介绍

氚云平台介绍 一.概述 氚云,自由构建一切应用 1.属于PaaS+SaaS: 2.提供开发与运行业务应用程序的所有功能(包括数据库.业务定制.工作流与审批.数据分析.可编程云逻辑.实时部署)以及丰富的模板SaaS应用(包括CRM.进销存.费控.流程管理等): 3.允许企业个性化或者全新构建具有社交和移动特性的应用程序. 二.功能介绍 1.完善的支撑架构 组织机构,扁平.矩阵等架构全支持 角色权限,功能.数据.字段全控制 SNS,人与人.人与系统全协同 工作流,全业务流程驱动 任务管理,系统工作实

Docker应用一:docker介绍

Docker介绍与安装 一.Docker与传统虚拟化区别 直接看下图:                  传统虚拟化实现架构                                   docker容器实现架构 比较两图的差异,左图虚拟机的Guest OS层和Hypervisor层在Docker中被Docker Engine层所替代.虚拟机的Guest OS即为虚拟机安装的操作系统,它是一个完整操作系统内核:虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在Host O

docke镜像上传到dockerhub仓库和阿里云docker仓库的方法

操作指南 1.  登录阿里云docker registry: $ sudo docker login --username=linjiaxin897591495 registry.cn-hangzhou.aliyuncs.com 登录registry的用户名是您的阿里云账号全名,密码是您开通namespace时设置的密码. 你可以在镜像管理首页点击右上角按钮修改docker login密码. 从registry中拉取镜像: $ sudo docker pull registry.cn-hangz

Docker使用阿里云docker镜像加速

首先进入阿里云docker库首页 https://dev.aliyun.com/ 点击 管理中心 点击 加速器 复制下面的加速地址 进入docker的 Settings 把basic 切换成 advanced,并在 registry-mirrors: 中填入刚刚复制的加速地址 应用后即可 原文地址:https://www.cnblogs.com/beyang/p/8352109.html

CentOS7用阿里云Docker Yum源在线安装Docker

一.参考文档 官方Docker安装文档:https://docs.docker.com/install/linux/docker-ce/centos 阿里云Docker安装文档:https://yq.aliyun.com/articles/110806 二.安装步骤1.删除已安装的Docker # Uninstall installed docker sudo yum remove docker docker-client docker-client-latest docker-common d

docker介绍和安装(一)

虚拟化简介 虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源.这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制.一般所指的虚拟化资源包括计算能力和资料存储. docker介绍 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基

第1章 Docker介绍

第1章 Docker介绍 1.1. docker简介 Docker是一个开源的应用容器引擎,基于GO语言开发并遵从 Apache2.0 协议开源: Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化: 容器完全使用沙盒机制,相互之间不会有任何借口,更重要的是容器性能开销极低: Docker从17.03版本之后分为CE(Community Edition:社区办),和EE(Enterprise Edition:企业版