Open ben7th opened 10 years ago
docker 是一个工具,可以很好的运行在 ubuntu 64 位系统上(官方支持),和其他一些64位系统(社区支持)上,这个工具可以运行一个应用容器(container)
这个容器(container)是已一个几百兆的镜像(image)为基础创建的,可以从网络下载其他人分享的配置好的镜像(image),也可以把自己配置好的镜像(image)分享到网络上
这个容器指的是配置了安装好了一些软件的类似虚拟机的东西,在这个容器中修改的文件不会影响到容器外的文件,但是可以复制容器内的文件到容器外,或者共享容器外的文件夹给容器使用,也可以创建数据类型的容器挂载到运行环境类型的容器
对容器进行了很多修改后,可以把这个容器当前的整个状态生成一个新的镜像(image)
比如在 ubuntu64位系统上安装 docker 然后配置一个运行 debian 系统的安装了 nginx 的镜像,然后通过 docker 命令启动一个基于这个镜像(image)的容器(container),并在容器中运行 nginx 服务
docker 可以很好的运行在 ubuntu 64 位系统上(官方支持),和其他一些64位系统(社区支持)上
必须是64位CPU
容器可以运行的系统(查看的社区分享的列表,支持主流的centos debian fedora ubuntu, 其他不熟悉的发行版没有仔细看)
mongoDB, mySQL, memcache, redis, nodejs 这些在容器中运行都没有问题
安装/部署时需要从公网下载镜像,然后运行时是独立的
- 首先准备一个 ubuntu 64 位系统
- 安装 docker 软件
- 配置一个镜像(安装好跑 rails 应用的所有软件,这个安装过程和在 linux 系统中安装软件是一样的),或者下载一个其他人配置好的跑 rails 的镜像
- 稍微修改一下镜像(增加共享文件夹,增加启动rails应用的脚本等等这些东西)
- 用 docker 基于这个镜像创建一个容器(同时挂载一个创建好的数据容器用来保存日志,数据文件等内容)
- 运行容器中的 rails 应用
或者更解耦的做 创建多个容器,分别运行 nginx mongodb rails 然后串联这几个容器(貌似是官方推荐的做法,优点不确定)
可以,两个容器完全独立,不受干扰
- 自己打包一个跑自己rails 应用的镜像,上传到网络
- 其他人有一个跑 docker 的环境,就可以直接下载镜像
- 然后基于这个镜像直接创建一个容器,并启动
可以
理论上可以简化分发和部署
脑补的方案是这样的
工程代码和运行环境封装到一个镜像,运行时创建两个容器,一个运行容器,一个数据容器,运行容器中有工程代码和运行环境,数据容器用来保存应用运行中生成的文件,用户数据,日志等等
软件升级时,重新封装工程代码和运行环境封装的镜像,客户更新这个镜像,并基于这个镜像创建一个新的运行容器,并挂在已经有的数据容器,这样就可以方便的完成升级和部署
因为运行容器中没有任何用户数据,所以可以随时创建新的代替旧的,只需要保证 数据容器不变就行
机制了解的差不多了,我觉得我可以开始尝试用 docker 搭建一个运行 kc 的服务端出来了,看看细节上存在什么问题没有
http://www.oschina.net/translate/coreos_and_docker_first_steps?cmp
http://www.open-open.com/lib/view/open1403571027233.html
http://www.infoq.com/cn/articles/docker-build-development-environment-based-on-fig
https://www.docker.com/ 调研这个工具,尝试回答下面的问题: