Flux7 Docker 系列教程(一):Docker 简介

本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction
 该系列所有文章将参考其他学习资料翻译,也会加入自己的学习作为部分注解。如有错误,欢迎指正。

Docker,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。Docker 和 Java
一样,号称“一次构建,一次配置,即可到处运行”(build once, configure once and run
anywhere)。本篇文章是 Flux7 Docker 系列教程的第一篇。随着教程的深入,我们将会在以后慢慢探讨 Docker
带来的优势和如何将 Docker 做到最大化的利用。

我们将在 6-7 周的时间内学习 Docker。(译者注:其实 2-3 天就能完成这系列的教程我会乱说…)

这篇文章是 Docker 系列教程的基础:Docker 的概念、安装和如何开始使用。

Docker 的特点

所有介绍一种新语言、新技术的文章开头都会介绍该技术的出众之处,本篇文章也不例外。作为当前捧得比较红的虚拟化技术,Docker 的特色包括但不仅限于:

  1. 飞快的运行速度和优雅的抽象框架
  2. 廉价
  3. 低 CPU 和内存使用
  4. 启动、关闭速度快
  5. 可以用来作为云计算的基础

Docker 应用的实例:微博红包:大规模 Docker 集群实践经验分享

http://www.infoq.com/cn/articles/large-scale-docker-cluster-practise-experience-share

Docker 组件/原理

Docker 有基本组件和元素各三个,视频 Docker Onboarding(请自带梯子)可以让你快速弄清三者之间的关系。

  1. Docker Client:用户和 Docker 守护进程进行通信的接口,也就是 docker 命令。
  2. Docker 守护进程:宿主机上用于用户应答用户请求的服务。
  3. Docker Index:用户进行用户的私有、公有 Docker 容器镜像托管,也就是 Docker 仓库。
  4. Docker 容器:用于运行应用程序的容器,包含操作系统、用户文件和元数据。
  5. Docker 镜像:只读的 Docker 容器模板,简言之就是系统镜像文件。
  6. DockerFile:进行镜像创建的指令文件。

在学习 Docker 组件之前,先来看一下 Docker 底层到底是由什么组成的:

  1. Namespace:隔离技术的第一层,确保 Docker 容器内的进程看不到也影响不到 Docker 外部的进程。
  2. Control Groups:LXC 技术的关键组件,用于进行运行时的资源限制。
  3. UnionFS(文件系统):容器的构件块,创建抽象层,从而实现 Docker 的轻量级和运行快速的特性。

关于 CGroup 和 namespace,可以参考酷壳的这两篇文章:
Docker基础技术:Linux Namespace(上)http://coolshell.cn/articles/17010.html
Docker基础技术:Linux Namespace(下)http://coolshell.cn/articles/17029.html
Docker基础技术:Linux CGroup http://coolshell.cn/articles/17049.html

步骤简述

运行任何应用都必须按照以下两个步骤来:

  1. 创建一个镜像文件
  2. 运行容器

这些操作是由 Docker Client 来执行的,Docker Client 一般指 docker 命令。首先,Docker Client 向 Docker Daemon 发出请求创建一个镜像、并且指定容器内要运行的命令。当 Daemon 接收到到信号后,便会执行以下操作:

1. 创建一个镜像文件

Docker 镜像相当于一个只读的模板文件,保存着运行容器所需要的所有的配置、文件;每次启动,都会以基础的 Docker 镜像为模板,按照
Dockerfile 的指令,建立一个新的适用于你自己的 Dokcer 镜像:实际上是在这个基础镜像上建立了一个新的应用层。

自己创建的 Docker 镜像可以推送到 Docker Index 中心,然后提供给他人使用。Docker Index 提供了公有库和私有库两种形式,私有库需要付费,大概 $7-$50 不等。和 GitHub 一样,公有库对所有人可见,私有库只对自己可见。docker 命令可以用来搜索 Docker Index 的镜像。

2. 运行容器

容器被运行后,会在原有的镜像上创建一个只读的层,容器设置完毕网络之后便可以运行应用了。

以上的描述可能会非常抽象:接下来的教程会使用运行在 Ubuntu 上的 Docker 实例来进行深入了解。

安装 Docker

Flux7 原文采用稳定的 Linux 服务器版本 Ubuntu 12.04 LTS 作为示例环境,安装 Docker 的方法如下:

  1. 检查 apt 系统的是否有 https 模块:检查文件 /usr/lib//apt/methods/https,如果不存在这个文件,就需要安装 apt-transport-https 软件包。
  2. 将 Docker 仓库的密钥加入本地的 keychain,仓库密钥:hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
  3. 将 Docker 仓库的软件源加入本地 apt 的软件源列表中
  4. 安装 lxc-docker 软件包
  5. 验证安装:执行 sudo docker run hello-world,输出 Hello from Docker. 即为成功安装 Docker。

以上是原文安装方法,译者推荐使用 Ubuntu 14.04 LTS 作为示例,安装方法如下:

Ubuntu 上的 Docker 分为 Ubuntu 官方维护的版本和 Docker 官方维护的版本:

Ubuntu 版 Docker

一条命令安装 Docker:

sudo apt-get install docker.io

Docker 版 Docker

也是一条命令:

wget -qO- https://get.docker.com/ | sh

Ubuntu 版 Docker 和 Docker 版 Docker 的区别在于,一个收纳 Ubuntu 团队认为稳定的版本,一个收纳 Docker 团队认为稳定的版本。

时间: 2024-11-07 05:35:46

Flux7 Docker 系列教程(一):Docker 简介的相关文章

【Docker系列教程之三】Docker容器是如何工作的

在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下 Docker 容器是如何工作的,学习好Docker容器工作的原理,我们就可以自己去管理我们的容器了. Docker架构 在上一篇文章的学习中,我们简单地讲解了Docker的基本架构.了解到了 Docker 使用的是 C/S 结构,即客户端/服务器体系结构.明白了 Docker 客户端与 Docker

Docker系列:第一讲.Docker简介与安装

什么是 Docker? Docker的英文翻译是"搬运工"的意思,他搬运的东西就是我们常说的集装箱Container,Container 里面装的是任意类型的 App,我们的开发人员可以通过 Docker 将App 变成一种标准化的.可移植的.自管理的组件,我们可以在任何主流的操作系统中开发.调试和运行. Docker和虚拟机有什么区别? 从概念上来看 Docker 和我们传统的虚拟机比较类似,只是更加轻量级,更加方便使,Docker 和虚拟机最主要的区别有一下几点: 虚拟化技术依赖的

【Docker系列教程之四】Dockerfile入门

在上一篇的文章中,我们把 Docker 容器的工作流程剖析的十分清楚了,我们大体可以知道 Docker 组件协作运行容器可以分为以下几个过程: Docker 客户端执行 docker run 命令 Dockerdaemon 发现本地没有我们需要的镜像 daemon 从 DockerHub 下载镜像 下载完成后,镜像被保存到本地 Dockerdaemon 启动容器 了解了这些过程以后,我们再来理解这些命令就不会觉得很突兀了,下面我来给大家讲讲 Docker 常用的一些命令操作吧. Docker常用

SVG系列教程:SVG简介与嵌入HTML页面的方式

地址:http://www.w3cplus.com/html5/svg-introduction-and-embedded-html-page.html 随着技术向前的推进,SVG相关的讨论也越渐频繁.为了紧跟时代的步伐,我也开始步入SVG相关技术的探索与学习之中.从这篇文章开始会在W3cplus站点上陆续向大家推出有关于SVG相关的教程.译文或案例等.感兴趣的同学可以跟随着教程一起了解与学习SVG相关的知识与技巧. 什么是SVG SVG是"Scalable Vector Graphics&qu

Docker系列:02.Docker基础使用

02.Docker基础使用 获取镜像: docker pull ubuntu 查找镜像:docker search ubuntu 查看镜像:docker images 删除镜像:docker rmi ubuntu,也可以用id,取前几位就行. 创建镜像:docker commit CONTAINER self:ubuntu CONTAINER为容器id 导出镜像:docker export xxxid > xxx.tar 导入镜像:docker import xxx.tar test/ubunt

Docker系列一:Docker的介绍和安装

Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建.部署和复制,并能将其从一个环境顺利迁移至另外一个环境. Docker官方网站:http://www.docker.com Github Docker 源码:https://github.com/docker/docker 基础特性: 基于C/S架构应用程序 模块化 层与镜像版本控制

Docker 系列五(Docker Compose 项目).

一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器为一个项目. Docker  Compose 中有两个重要的概念: 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例.项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义. Docker Comp

Docker入门教程(一)介绍

http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了Docker的基础概念以及Docker的安装. Docker是一个新的容器化的技术,它轻巧,且易移植,号称“build once, configure once and run anywhere(译者注:这个就不翻译了,翻译出来味道就没了)”.本文是Flux7的Docker系列教程的第一部分.请和这

Docker入门教程(二)命令

Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker系列教程的第一篇文章中,我们了解了Docker的基础知识,知道了它是如何工作以及如何安装的.在这篇文章中,我们将学习15个Docker命令,并通过实践来学习它是如何工作的. 首先,让我们通过下面的命令来检查Docker的安装是否正确: docker info  如果没有找到这条命令,则表示Docke