Docker学习笔记

一,Docker 学习笔记系列博客

  • docker容器运行和资源限制
  • docker网络
  • docker存储

二,Docker

Docker学习笔记_第1张图片
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何主流机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

官网:
https://www.docker.com/
docker hub:
https://hub.docker.com/explore/


三,Docker的优势

对于开发人员:Build Once、Run Anywhere。
容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器便可在其他机器上运行。另外,容器环境与所在的Host环境是隔离的,就像虚拟机一样,但更快更简单。

对于运维人员:Configure Once、Run Anywhere。
只需要配置好标准的runtime环境,服务器就可以运行任何容器。这使得运维人员的工作变得更高效。一致和可重复。容器消除了开发、测试、生产环境的不一致性。


四,安装docker

docker的安装方法网上有很多教程:
http://www.docker.org.cn/book/install/supported-platform-17.html
http://www.runoob.com/docker/centos-docker-install.html
个人建议使用脚本安装,因为有些源上的docker版本可能比较久,脚本如下

#确保 yum 包更新到最新。
$ sudo yum update
#执行 Docker 安装脚本,执行这个脚本会添加 docker.repo 源并安装 Docker。
$ curl -fsSL https://get.docker.com/ | sh
#启动 Docker 进程。
$ sudo service docker start
#验证 docker 是否安装成功并在容器中执行一个测试的镜像。
$ sudo docker run hello-world

五,镜像下载加速

使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。

Docker 国内镜像:

  • 网易加速器:http://hub-mirror.c.163.com
  • 官方中国加速器:https://registry.docker-cn.com
  • ustc的镜像:https://docker.mirrors.ustc.edu.cn
  • daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

六,构建镜像

对于docker用户来说,最好的情况是不需要自己构建镜像。几乎所有常用的数据库、中间件、应用软件等都有现成的docker官方镜像或其他人和组织创建的镜像,我们只要稍作配置就可以直接使用。

使用现成镜像的好处除了省去自己做镜像的工作量外,更重要的是可以利用前人的经验,特别是使用那些官方镜像,因为docker的工程师知道如何更好地在容器中运行软件。

当然,某些情况我们也不得不自己构建镜像,比如:
1. 找不到现成的镜像,比如自己开发的应用程序。
2. 需要在镜像中加入特定的功能,比如官方镜像几乎都不提供ssh。

docker提供了两种构建镜像的方法:docker commit命令和Dockerfile构建文件。

docker更加建议用户使用Dockerfile构建镜像而不是docker commit。
原因:
1. docker commit是一种手工创建镜像的方式,容易出错,效率低而且可重复性差。
2. docker commit构建镜像,使用者并不知道镜像是如何创建出来的,里面是否有恶意程序。也就是说无法对镜像进行审计,存在安全隐患。


七,容器与虚拟机

谈到容器,就不得不将它与虚拟机进行对比,因为两者都是为应用提供封装和隔离。

容器由两部分组成:
1,应用程序本身;
2,依赖:比如应用程序需要的库或其他软件容器在host操作系统的用户空间运行,与操作系统的其他进程隔离。
这一点显著区别与虚拟机。

传统的虚拟技术,比如VMware,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十MB),还得安装整个操作系统(几十GB)。

由于所有的容器共享同一个 host os ,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快、开销更小,也更容器迁移。


八,参考资料

  • 《每天5分钟 玩转Docker容器即使》
  • http://www.runoob.com/docker/docker-tutorial.html

你可能感兴趣的:(Docker)