Docker 基础入门与实践

一、Docker是什么?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制。几乎没有性能开销,最重要的是,他们不依赖于任何语言、框架包括系统。

Docker先后赢得了Google、微软、Amazon、VMware等巨头的青睐,巨头们纷纷示意将保证自己平台与Docker容器技术的兼容性,作为国内最大的云服务商阿里云于2015年正式接口docker支持。

在Docker 1.0正式发布之前,就已经有3家主要银行将其投入到生产应用中,截止目前docker最新版本为:V1.10

docker

二、目前docker主要应用场景

面向开发人员:快速开发、交付应用程序。在容器技术出现之前,公司往往是通过为开发人员提供一台或者多台虚拟机来充当开发测试环境。开发测试环境一般负载较低,大量的系统资源都被浪费在虚拟机本身的进程上了。docker容器几科没有任何CPU和内存上的额外开销,很适合用来提供公司内部的开发测试环境。而且由于docker镜像可以很方便的在公司内部分享,这对开发环境的规范性也有极大的帮助。

面向运维人员:降低运维成本。正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。Docker通过镜像机制,将你的代码和运行环境直接打包成镜像,扔到容器启动即可,可快速部署、扩容。

面向企业:Docker本身就发家于PaaS,在Docker面向企业,是可以提供Paas层的实现;比如,扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

三、Docker相对于 VM 的主要优势

Docker应用容器相对于 VM 有以下几个优点:

  1. 启动速度快,docker通常在几秒内可以启动,而 VM OS本身启动就要一两分钟。
  2. 资源利用率高,性能开销小;一台普通8G内存PC 普通应用轻轻松松十几个,容器上运行的程序性能与原生相差无几。而启用十几个VM上基本不可能,VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的大量资源。

四、快速安装

这里以阿里云提供方式安装,系统以ceontos为例。

登录系统后执行

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

稍等片刻即可安装完成(取决于你的网络环境)。

docker_install_1

配置Docker加速器
可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中
# 系统要求 CentOS 7 以上,Docker 1.9 以上。

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://8y7pouys.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart

阿里目前提供镜像管理功能,推荐使用之,另外如果你不想使用阿里提供的该功能,当然也可以搭建自己的docker 私有仓库进行管理,这点跟maven管理方式有些类似。

阿里免费提供docker镜像管理

五、应用实例(以搜索、安装、运行tomcat为例)

这里以最常用的tomcat为例,在这儿之前我们的针对不同项目,开发测试环境需要部署不同的tomcat,需要保证相互之间互不影响,通常一个tomcat只发布一个应用,一般如下做法。

  1. 同一台服务器,部署N个tomcat,每次需要安装不同的目录,不同的服务,改N个不同的端口,很是繁琐。
  2. 为不同的项目建立不同的VM,不同的项目组独立,这也带来了比较大的资源浪费。

下面我们来看看docker方式:

  1. 从库里搜索
    docker search tomcat
  2. 进行镜像下载
    docker pull tomcat
  3. 直接运行tomcat
    docker run -h "tomcat" -name="tomcat" -p 8888:8080 tomcat:8.0
    我们无需关心容器内部端口是否与母机冲突,将内部与母机端口添加一个映射即可,母机端口为:8888 然后打开浏览器,又可以见到那可爱的小猫咪了。docker_tomcat_2
    后续对于tomcat的启动、关闭可以直接运行
    docker start tomcat
    docker stop tomcat
    一切又变得很easy了。

六、国内一些提供docker服务的网站

  1. 灵雀云:http://www.alauda.cn/ 北京凌云雀科技有限公司成立于2014年10月,国内较早基于容器技术、服务于开发者及企业的的云计算平台。
  2. https://www.daocloud.io, 上海道客网络科技有限公司,2015.1成立,企业级容器云平台和解决方案提供商

参考资料

  1. Docker:在项目网站上了解 Docker 的更多信息。
  2. Docker:带给现代开发人员的福利

Leave a Reply


正在读取数据……