Docker是一个
开源的应用容器引擎,开发者可以打包他们的
应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
容器使用沙箱机制,相互之间无任何接口。
沙箱:“一种安全机制”。一个虚拟系统程序,允许在沙盘环境中运行浏览器或其他工具,因此运行所产生的变化可以随后删除。
Docker的设想:
Docker设想是交付运行环境如同海运,OS如同一个货轮,
每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段
自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。
Docker使用客户端-服务器 (C/S) 架构模式,使用
远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
搜索可用的docker镜像:
docker search *
下载容器镜像:
docker pull *
在容器中启用某一个进程:docker run命令
docker run learn/tutorial echo "hello word"
在容器中安装新的程序:安装ping程序
在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。
正确的命令:
$docker run learn/tutorial apt-get install
-y ping
保存对容器的修改:
首先使用
docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
提示: 1. 运行docker commit,可以查看该命令的参数列表。 2. 你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得) 3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
正确的命令:
$docker commit 698 learn/ping
运行新的镜像:使用新的镜像名
$docker run lean/ping ping www.google.com
发布镜像:
提示: 1. docker images命令可以列出所有安装过的镜像。 2. docker push命令可以将某一个镜像发布到官方网站。 3. 你只能将镜像发布到自己的空间下面。这个模拟器登录的是learn帐号。
预期的命令:
$ docker push learn/ping