docker是一种新兴的虚拟化方式,docker 跟传统的虚拟化方式相比具有众多的优势。
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
传统的虚拟机技术启动应用服务往往需要数分钟,而 docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现「这段代码在我机器上没问题啊」这类问题。
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合持续集成(Continuous Integration)系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment)系统进行自动部署。
而且使用Dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
由于 docker 确保了执行环境的一致性,使得应用的迁移更加容易。docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
特性 | 容器(docker) | 虚拟机(VM) |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 性能损失较大 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
首先,我们进入docker官网,下载安装文件,网址为:https://docs.docker.com/docker-for-windows/install/
随后,我们需要登录才能下载。
下载之后安装,安装完后会提示你注销后才能使用,注销。
注销后如果你的windows的hyper-V不可用的话,还会提示你重启,之后docker会在你的右下方出现一个小鲸鱼,之后就可以使用docker啦。
现在我们打开命令行(win+R键输入cmd来运行),通过下方的命令查看docker是否可以运行
docker -v
可以看到我们所使用的的docker版本,说明docker安装成功~
按照惯例,我们运行helloworld。
docker run hello-world
欢迎来到docker的世界。
在docker中,运行一个环境,需要镜像(Image)和容器(Container),镜像和容器之间的关系就好比python中的类和实例一样,镜像通过docker run命令可以转化(运行)成容器,容器通过docker commit命令可以包装(提交)成镜像。并且,一个镜像可以运行成互不影响的多个容器。需要注意的是,只有镜像才可以拷贝与分享,而容器不行。
下面,我们通过布置ubuntu-16.04的镜像来理解上述概念。
首先,我们上docker的官网来需要的我们需要的镜像,官网地址为https://hub.docker.com/
在箭头所指的位置输入'ubuntu'。在搜索结果中我们选择下载数最高的官方镜像进行安装。
我们点击Tags,查看可用的版本。
往下拉我们可以找到有一个Tags的名字叫做16.04,我们安装的目标就是他。让我们回到命令行进行安装。安装命令的格式为:
docker pull [image_name]:[image_tag]
因此,我们输入的命令为:
docker pull ubuntu:16.04
运行结果为:
注意:由于一些原因,通过原始源下载镜像十分缓慢,因此我们将中科大的镜像源加入docker。右键小鲸鱼的图标,
选择Settings->Daemon,在Registry mirrors中添加https://docker.mirrors.ustc.edu.cn,之后Apply。等待docker重启即可。
下载完成后,我们使用如下命令查看docker已有的镜像。
docker images