Docker可以运行于任何安装了现代Linux内核的x64主机上。推荐的内核版本是3.8或者更高。Docker的开销比较低,可用于服务器、台式机或者笔记本。它包括以下几个部分。

  • 一个原生的Linux容器格式,Docker中称为libcontainer。
  • 文件系统隔离: 每个容器都有自己的root文件系统。
  • 进程隔离:每个容器都运行在自己的进程环境中。
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
  • 资源隔离和分组:使用cgroup(即control group,linux 的内核特性之一)将CPU和内存资源之类的资源独立分配给每个Docker容器。
  • 写时复制: 文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小。
  • 日志: 容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排错。
  • 交互式shell:用户可以创建一个伪终端,将其连接到STDIN,为容器提供一个交互式的shell

安装先决条件:

  • 运行Linux3.8或者更高版本内核(64bit)
  • 内核必须支持一种合适的存储驱动(storage driver),例如:
    • Device Manager;
    • AUFS
    • vfs
    • btrfs
    • ZFS
    • 默认存储驱动通常是Device Mapper或AUFS
  • 内核必须支持并开启cgroup和命名空间(namespace)功能。

检查前提条件

  • 内核:通过uname命令检查内核版本信息(uname -a)
  • 检查Device Mapper(存储驱动):任何Ubuntu 12.04或者更高版本的宿主机应该都已经按照了Device Mapper,可以通过以下命令
    ls -l /sys/class/misc/device-mapper

  也可以在/proc/devices文件中检查是否有device-mapper条目,

sudo grep device-mapper /proc/devices

  如果没有出现device-mapper的相关信息,也可以尝试加载dm_mod模块,如下:

sudo modprobe dm_mod

  

cgroup 和命令空间自2,6版本开始已经集成在linux内核中了,2.6.38以后的内核对cgroup和命令空间都提供了良好的支持,基本上没什么bug

Install Docker

使用Docker DEB软件包安装docker

1) 添加Docker的APT仓库

sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-trusty main >/etc/apt/sources.list.d/docker.list"

应该将trusty 替换为主机的Ubuntu发行版本,通过运行lsb_release 命令来实现,检测curl有没有安装

sudo lsb_release --codename |cut -f2 trusty 

添加Docker仓库的GPG秘钥,

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D  

更新APT源

sudo apt-get update 

安装Docker软件包

sudo apt-get install docker-engine

  

检查安装

docker info

  

在Ubuntu中,如果使用了UFW(Uncomplicated Firewall).需在UFW中启用数据包的转发,这样才能让Docker正常运行

修改/etc/default/ufw,将DEFAULT_FORWARD_POLICY="DROP 改为

DEFAULT_FORWARD_POLICY=“ACCEPT”

保存修改内容并重新加载UFW即可

sudo ufw reload

  

Docker 的技术组件的更多相关文章

  1. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  2. Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)

    Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案. 让我们先来看看 Prometheus ...

  3. 如何快速部署 Prometheus?- 每天5分钟玩转 Docker 容器技术(85)

    上一节介绍了 Prometheus 的核心,多维数据模型.本节演示如何快速搭建 Prometheus 监控系统. 环境说明 我们将通过 Prometheus 监控两台 Docker Host:192. ...

  4. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

  5. 初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

    在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.E ...

  6. 万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

    前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容 ...

  7. 部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)

    Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集.检索.可视化 Dashboard.本节将实践用 Graylog 来管理 Docker 日志. Graylog 架构 G ...

  8. 部署 k8s Cluster(上)- 每天5分钟玩转 Docker 容器技术(118)

    我们将部署三个节点的 Kubernetes Cluster. k8s-master 是 Master,k8s-node1 和 k8s-node2 是 Node. 所有节点的操作系统均为 Ubuntu ...

  9. 部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)

    上节我们通过 kubeadm 在 k8s-master 上部署了 Kubernetes,本节安装 Pod 网络并添加 k8s-node1 和 k8s-node2,完成集群部署. 安装 Pod 网络 要 ...

随机推荐

  1. 解决Android Studio提示gradle project sync failed报错的解决方法

    运行的时候报错,提示:gradle project sync failed 1.打开AS,切换到project目录结构依次进入目录app->gradle->gradle-wrapper.p ...

  2. 转:nginx模块开发——handler(一)

    handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-ba ...

  3. Hadoop: Add third-party libraries to MapReduce job

    来自:http://hadoopi.wordpress.com/2014/06/05/hadoop-add-third-party-libraries-to-mapreduce-job/ Anybod ...

  4. javac编译时找不到文件的问题和运行项目找不到指定类问题

    问题描述: 刚刚安装完JDK,打开Eclipse创建一个新项目,写了一个测试类进行输出打印语句时,报无法找到相应类. 然后,我跑到CMD中进行javac Test.java运行测试时,报找不到对应文件 ...

  5. C# new和初始化

    虽然知道使用new可以创建对象,但一直不是很理解初始化和new等知识的具体. 通过8个问题和需求,了解相关知识. 了解问题和需求 1.new 的三个步骤 2.初始化是什么意思. 3.变量声明后和变量赋 ...

  6. 【Zookeeper】源码分析之序列化

    一.前言 在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信.数据存储中都用到了序列化,下面开始分析. 二.序列化 序列化主要在zook ...

  7. JAVA的驼峰和下划线互转帮助类

    实体类: import java.io.Serializable; import lombok.AllArgsConstructor; import lombok.Data; import lombo ...

  8. DLib压缩解压程序示例

    /* 这是一个示例程序,使用了Dlib库的compress_stream和cmd_line_parser组件. 这个示例实现了一个简单实用的命令行压缩程序. 当使用-h选项时候,程序输出如下: 使用: ...

  9. Swoole源代码学习记录(十三)——Server模块具体解释(上)

    Swoole版本号:1.7.5-stable Github地址:https://github.com/LinkedDestiny/swoole-src-analysis 最终能够正式进入Server. ...

  10. Ubuntu 13.04下安装WPS for Linux

    [日期:2013-06-03]   有人说Linux下不是有open office 和libre office么?是啊,可是将windows下的doc文档或者ppt放到Libreoffice上打开的时 ...