专栏首页北京马哥教育docker容器技术系列一:基本概念

docker容器技术系列一:基本概念

前言:从去年下半年开始,我们就尝试在使用docker部署生产应用,至现在已经有十多个项目使用了docker容器部署,docker为我们节约 了大量的服务器资源,并提高了运维的交付能力。我和我的小伙伴们在学习和使用docker的过程中遇到了很多的坑,现在我将我所理解的docker相关技 术写成两个系列文章《docker容器技术系列》和《docker管理进阶系列》供大家参考。

一、什么是docker?

  • Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
  • Docker基础是Linux 容器(LXC)基础,并对其进行了更高层面的封装,使得用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
  • Docker容器与传统虚拟机不同,容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。参考如下对比图:

二、为什么要用docker?

2.1 比虚拟机高效:

  • 如前描述,因容器复用了本地主机操作系统,仅仅是封装了容器运行所需的软件环境(从这个角度看可以参考RPM安装包),因此与主机上直接运行软件所需的资源几乎是一样的。不像虚拟机那样需要额外的内存、CPU等来支持虚拟机操作系统的运行。

2.2 快速交付和部署:

  • 对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。而且可以保证每一个地方运行的环境都是一模一样的,不会因为开发环境与生产环境不同而导致某些问题。
  • docker容器的启动更是秒级的,因此可以随时快速生产、关闭。

2.3 轻松迁移和扩展:

  • docker镜像可以在任意环境中迁移,而不会出现兼容性问题,迁移过程轻松方便。

2.4 管理简单:

  • 使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

2.5 docker对比传统虚拟机

三、docker镜像、容器、仓库的基本概念

3.1 镜像:

  • Docker 镜像就是一个只读的模板。 例如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 httpd或用户需要的其它应用程序。
  • 镜像可以用来创建 Docker 容器。
  • Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

3.2 容器:

  • Docker 利用容器来运行应用。
  • 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
  • *注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

3.3 仓库:

  • 仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
  • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
  • 最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 其作为默认docker仓库,但在国内下载速度很慢。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
  • *注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:旺旺

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 架构师分享 Docker 新手入门完全指南

    下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

    小小科
  • 5个你必须知道的Docker实用工具

    原文:5 Docker Utilities You Should Know 作者:Shekhar Gulati 翻译:Vincent Docker社区已经创建了...

    小小科
  • Docker 完全指南

    Docker 作为新瓶装旧酒的一门技术,用简单便捷的操作极大改变了软件开发的流程与生态环境,本文我们就来了解一下。注:Docker 目前已改名为 Moby。

    小小科
  • Docker基本概念

    2010年,几个大胡子年轻人在旧金山成立了一家PaaS(Platform as a Service)平台的公司,起名为「dotCloud」. dot...

    louiezhou001
  • Docker入门&漏洞测试环境搭建

    Docker是一个开源的应用容器引擎,基于 Go语言,并遵从Apache2.0协议开源。 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的...

    tinyfisher
  • Docker入门教程 Part 3 Services

    本篇笔记是官方Get Started入门教程的Part3 Services,主要演示如何使用 docker-compose.yml 来定义应用服务,docker...

    twowinter
  • Linux 系统代理魔法对 Docker 无效?

    Linux所谓的系统代理是针对系统使用者,通过SHELL转化用户请求为系统可识别,完成网络出口的系统转发。Docker基于C/S架构运行,Server端由Sys...

    运维部落
  • docker入门

    让开发人员最头疼的麻烦事之一就是环境配置了,每台计算机的环境都不相同,应该如何确保自己的程序换一台机器能运行起来呢?

    超蛋lhy
  • Docker实战(一)

    Docker 也是作为我的第二技能栈之一,除了 Go 语言,Docker 是我最喜欢的第二技能栈了,值得一提的是,Docker 是 Go 语言编写的。现在很多公...

    张乘辉
  • Spring Boot 2 实战:结合 Docker 容器化

    Docker 是啥?好处是啥? 什么现在如果作为一名开发你还不知道甚至没有用过我都感觉你落伍了。Docker 是一种虚拟化的容器技术,目的为了打造持续集成、版本...

    码农小胖哥

扫码关注云+社区

领取腾讯云代金券