Docker入门教程(五)Docker安全

【编者的话】DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通过阅读本文快速了解。

我们必须高度重视开源软件的安全问题,当开发者在使用Docker时,从本地构建应用程序到生产环境部署是没有任何差异的(译者注:作者的言外之意是更应该重视Docker的安全问题)。当Docker被越来越多的平台使用的时候,我们需要严格保证Docker作为一个项目或者平台的安全性。

因此,我们决定在Docker系列教程的第五篇来讨论Docker安全性的相关问题以及为什么会它们影响到Docker的整体安全性。由于Docker是LXC的延伸,它也很容易使用LXC的安全特性。

在本系列的第一篇文章中,我们知道docker run命令可以用来运行容器。那运行这个命令后,Docker做了哪些具体的工作呢?具体如下:

  1. docker run命令初始化。
  2. Docker 运行 lxc-start 来执行run命令。
  3. lxc-start 在容器中创建了一组namespace和Control Groups。

对于那些不知道namespace和control groups的概念的读者,我在这里先给他们解释一下:namespace是隔离的第一级,容器是相互隔离的,一个容器是看不到其它容器内部运行的进程情况(译者注:namespace系列教程可以阅读DockerOne上的系列教程)。每个容器都分配了单独的网络栈,因此一个容器不可能访问另一容器的sockets。为了支持容器之间的IP通信,您必须指定容器的公网IP端口。

Control Groups是非常重要的组件,具有以下功能:

  • 负责资源核算和限制。
  • 提供CPU、内存、I/O和网络相关的指标。
  • 避免某种DoS攻击。
  • 支持多租户平台。

Docker Daemon的攻击面

Docker Daemon以root权限运行,这意味着有一些问题需要格外小心。
下面介绍一些需要注意的地方:

  • 当Docker允许与访客容器目录共享而不限制其访问权限时,Docker Daemon的控制权应该只给授权用户。
  • REST API支持Unix sockets,从而防止了cross-site-scripting攻击。
  • REST API的HTTP接口应该在可信网络或者VPN下使用。
  • 在服务器上单独运行Docker时,需要与其它服务隔离。

一些关键的Docker安全特性包括:

  1. 容器以非特权用户运行。
  2. Apparmor、SELinux、GRSEC解决方案,可用于额外的安全层。
  3. 可以使用其它容器系统的安全功能。

Docker.io API

用于管理与授权和安全相关的几个进程,Docker提供REST API。以下表格列出了关于此API用于维护相关安全功能的一些命令。

Docker系列教程的下一篇文章中我们将继续探讨前面第二篇文章中所讨论的Docker命令的进阶。

Docker入门教程(五)Docker安全的更多相关文章

  1. Docker(三):Docker入门教程-CentOS Docker 安装

    CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...

  2. 超实用的Docker入门教程|Docker vs VM

    概述 如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发 ...

  3. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  4. [转帖]Docker 入门教程

    Docker 入门教程 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 自己学的还是太肤浅啊.. 作者: 阮一峰 日期: 201 ...

  5. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  6. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  7. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  8. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  9. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

随机推荐

  1. 拼图游戏(js,C#,java三种语言)

    <html> <head> <meta charset="utf-8"> <style type="text/css" ...

  2. 71 fdisk-Linux 的磁盘分区表操作工具。

    语法: fdisk [-l] 装置名称 选项与参数: -l :输出后面接的装置所有的分区内容.若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来. 实例 列出所有分区 ...

  3. 常用数据库高可用和分区解决方案(1) — MySQL篇

    在本文中我们将会讨论MySQL.Oracle.MongoDB.Redis以及Oceanbase数据库,大家可能会奇怪为什么看不到有名关系型数据库MSSQL.DB2或者有名NoSQL数据库Hbase.L ...

  4. 什么是smarty?

    什么是smarty? Smarty是一个使用PHP写出来的模板PHP模板引擎,由PHP.net官方提供 ,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程 序员同美工分离,使用的程序员改 ...

  5. C#分割字符串

    命名空间:System.String.Split 程序集:mscorlib( mscorlib.dll) 简单实例: string before = "12,50,30"; str ...

  6. eclipse的插件安装

    如何安装:http://my.oschina.net/linjunlong/blog/126961 插件安装方法:eclipse和myeclipse版本不一样,略有区别 在线安装: 第一种:知道在线安 ...

  7. jQuery能做些什么

    来源于: Learning jQuery, 4th Edition What jQuery does: 1. Access elements in a document; $('div.content ...

  8. ubuntu14.04完全卸载mysql

    1.删除 mysql1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 su ...

  9. [转]Spring的事务管理难点剖析(1):DAO和事务管理的牵绊

    原文地址:http://stamen.iteye.com/blog/1441758 有些人很少使用Spring而不使用Spring事务管理器的应用,因此常常有人会问:是否用了Spring,就一定要用S ...

  10. 【SPOJ 1812】Longest Common Substring II

    http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...