编程是一门艺术

raptor.zh(at)gmail.com Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

archives 存档

01 Jan - 31 Dec 2018
01 Jan - 31 Dec 2017
01 Jan - 31 Dec 2016
01 Jan - 31 Dec 2015
01 Jan - 31 Dec 2014
01 Jan - 31 Dec 2013
01 Jan - 31 Dec 2012
01 Jan - 31 Dec 2011
01 Jan - 31 Dec 2010
01 Jan - 31 Dec 2009
01 Jan - 31 Dec 2008
01 Jan - 31 Dec 2007
01 Jan - 31 Dec 2006
01 Jan - 31 Dec 2005
01 Jan - 31 Dec 2004
01 Jan - 31 Dec 2003
01 Jan - 31 Dec 2002
01 Jan - 31 Dec 2001
01 Jan - 31 Dec 2000
01 Jan - 31 Dec 1999

--

links 链接

--

docker实践入门之一

前戏……呃,前言

docker是什么?

docker是一种容器技术,它的主要功能就是能够让进程在一个隔离的容器环境里运行——在进程看来,它有一整套“独立”的OS环境,包括文件系统,类似于虚拟机。

docker不是什么?

docker 不是虚拟机,它只是一套虚拟运行环境,实际上在host机上用ps可以看到容器里面的进程。实际上docker里用到的环境都是来自于host机,只是相 对隔离而已,类似于python的virtualenv,在每个独立的env里,python程序有独立的python解释器和相应的site- packages,看似隔离的环境,但实际上还是运行在host机上。只是docker的容器隔离比python的环境隔离更高一些,但又比虚拟机的完全 隔离更低一些。

docker有什么用途?

docker最大的用途就是方便了部署。以python应用为例,如果在一台机器上部署多个应用时,如果不同的应用有不同的依赖,比如使用了不同版本的python或者不同版本的包,就会冲突。

当然python有virtualenv可以较好地实现隔离,但是并不是所有的应用都是用python写的,而且即使python应用也还是需要依赖别的应用程序,比如数据库。比如一个应用需要mysql5.0另一个应用需要mysql5.6,一样会面临冲突的问题。

用虚拟机虽然也可以解决这样的问题,但是代价太大,且不说虚拟化造成的性能损失,还有每个虚拟机里都需要安装完整的OS。

微服务

实 际上,docker的最佳实践就是每个进程(实际上是指每个运行的应用程序,但一个应用程序本身可能会开好几个工作进程,比如webserver)开一个 容器。 所以在这点上,它与virtualenv还不太一样,对于venv来说,如果两个应用的依赖一样,也完全可以跑在一个venv里,但是docker并不是 这样。

比如nginx开一个容器,mysql开一个容器,redis开一个容器,每个应用开一个容器。然后把它们互联起来。对host机来 说,它的环境是干净的,只是跑着几个docker容器。对于每个容器来说,其中的程序所用的环境也是干净的,只有它们用到的依赖,保证不会有不必要的冲 突。每个容器做的事情也是清楚的:对外提供某个服务,或者依赖某个外部服务。所有的服务都是通过docker的虚拟网络建立连接。

其实这种就是所谓的“微服务”架构,每个container就是一个微服务。

Container和Image

说了半天容器,它到底是什么?

前 面说过,容器(container)是一个虚拟运行环境,这里的关键在于它是一个“运行”环境,即是一个“动态”的概念,只在运行时存在,一个容器就是一 个运行的image,其中构造了一个虚拟的OS环境(相比之下虚拟机是构造一个虚拟的硬件环境,venv只是构造了一个虚拟的python运行环境),应 用就运行在这个虚拟OS环境中。

那么image又是什么?

image就是一个静态的container。如果你对image和container还不是很理解的话,可以把它们类比成程序和进程:

image就相当于程序,是一个静态的东西,container则相当于进程,就是把程序运行起来的一个实例,一个程序可以启动成多个进程,就像一个image可以启动成多个container。

当然,实际上image和container并不完全等同于程序和进程。因为一个container还可以通过docker的commit命令保存成一个image,这是进程做不到的。

安装及使用说明

docker的安装(略,详见官网,现在docker已经被解封了,不用再像两年前我刚开始玩docker时那么折腾)

docker的使用(略,常用命令见官方文档)

推送到[go4pro.org]

Trackback link:

Please enable javascript to generate a trackback url

No trackbacks

评论(0)


 
   
 
  表情图标 

 


提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.