1、Docker安全主要体现在如下方面

  a)Docker容器的安全性

  b)镜像安全性

  c)Docker daemon安全性

2、安装策略

  2.1 Cgroup

    Cgroup用于限制容器对CPU、内存的使用。

    设置容器CPU权重为100,默认为1024

      docker run --rm -ti -c 100 ubuntu bash

    限制容器对CPU资源的使用上限

      docker run --rm -ti --cpu-period=500000 --cpu-quota=250000 ubuntu /bin/bash

      表示这个容器每0.5秒最多运行0.25秒

    绑定CPU运行

      docker run --rm -ti --cpuset-cpus=0,1 ubuntu bash

  2.2 限制内存

    docker run --rm -ti -m 200M ubuntu bash

    限制容器内存为200M

    注意:当内存达到峰值时会使用swap分区,可通过--memory-swap限制swap分区的使用量

  2.3 限制块设备I/O

    测试当前写入速率

      root@e977b6cb88d7:/# dd if=/dev/zero of=testfile0 bs=8k count=5000 oflag=direct
      5000+0 records in
      5000+0 records out
      40960000 bytes (41 MB, 39 MiB) copied, 0.313395 s, 131 MB/s

    在容器上查看挂载详情

      root@e977b6cb88d7:/# mount | grep e977b6cb88d7
      /dev/mapper/docker-253:0-2394716-e977b6cb88d7ea106beb80851728a05e26b3458cb2b05514f20d870892989171 on / type ext4       (rw,relatime,barrier=1,stripe=16,data=ordered)

    在宿主机查看设备号

      [root@MediaServer ~]# mount | grep e977b6cb88d7
      [root@MediaServer ~]# ll /dev/mapper/docker-253\:0-2394716-e977b6cb88d7ea106beb80851728a05e26b3458cb2b05514f20d870892989171
      lrwxrwxrwx 1 root root 7 10月 12 21:07 /dev/mapper/docker-253:0-2394716-e977b6cb88d7ea106beb80851728a05e26b3458cb2b05514f20d870892989171 -> ../dm-4
      [root@MediaServer ~]# ll /dev/dm-4
      brw-rw---- 1 root disk 253, 4 10月 12 21:07 /dev/dm-4    #253,4为设备号

    限制写入速度为每秒5120000字节

      echo "253:4 5120000" > /cgroup/blkio/docker/e977b6cb88d7ea106beb80851728a05e26b3458cb2b05514f20d870892989171/blkio.throttle.write_bps_device

    再次测试容器写入速率

      root@e977b6cb88d7:/# dd if=/dev/zero of=testfile0 bs=8k count=5000 oflag=direct
      5000+0 records in
      5000+0 records out
      40960000 bytes (41 MB, 39 MiB) copied, 9.37702 s, 4.4 MB/s

  2.4 ulimit限制

    全局默认设置:

      docker daemon --default-ulimit cpu=1200

    单独设置:

      docker run --rm -ti --ulimit cpu=1200 ubuntu bash

      root@6667c7f607f8:/# ulimit -t
      1200

  2.6 容器+虚拟化

    将容器部署在虚拟机中

  2.7 日志审计

    Docker daemon支持log-driver参数,目前支持的类型有:none、json-file、syslog、gelf、fluentd,默认的驱动是json-file。

    除了Docker daemon指定日志驱动外,还可以对单个容器指定驱动,

    #docker run --rm -ti --log-driver="syslog" ubuntu bash

    然后通过docker inspect可以查看容器使用的日志驱动

    #docker inspect 容器ID | grep Type

      "Type": "syslog",

    注意:只有json-file日志驱动才支持docker logs

  2.8 监控  

    root@HX-StrMedia:~# docker stats container1

    CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
    container1 0.00% 5.005 MB / 33.73 GB 0.01% 1.296 kB / 648 B 7.766 MB / 0 B

    CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
    container1 0.00% 5.005 MB / 33.73 GB 0.01% 1.296 kB / 648 B 7.766 MB / 0 B

    CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
    container1 0.00% 5.005 MB / 33.73 GB 0.01% 1.296 kB / 648 B 7.766 MB / 0 B

  2.9 文件系统级别防护

    docker run --rm -ti --read-only --name=container1 centos bash

    [root@fd582b88f6fb /]# echo "Test" > Test
    bash: Test: Read-only file system

  2.10 Capability

    root@HX-StrMedia:~# docker run --rm -ti --cap-drop=chown centos bash
    [root@6a6dc05cbced /]# chmod 777 /etc/hosts
    [root@6a6dc05cbced /]# chown 2:2 /etc/hosts
    chown: changing ownership of '/etc/hosts': Operation not permitted

    root@HX-StrMedia:~# docker run --rm -ti --cap-drop=all centos bash

Docker(十):Docker安全的更多相关文章

  1. Docker(十)-Docker创建DockerFile文件

    制作Docker image 有两种方式: 使用 Docker container,直接构建容器,再导出成 image 使用. 是使用 Dockerfile,将所有动作写在文件中,再 build 成 ...

  2. SpringCloud(十) - Docker

    1.Docker安装 1.1 卸载旧版本(否者会安装出错) sudo yum remove docker \ docker-client \ docker-client-latest \ docker ...

  3. Docker(十六)-Docker的daemon.json的作用

    docker安装后默认没有daemon.json这个配置文件,需要进行手动创建.配置文件的默认路径:/etc/docker/daemon.json 一般情况,配置文件 daemon.json中配置的项 ...

  4. docker 系列 - Docker 安装和Hub Mirror地址设置

    ======================为什么要使用Docker?======================= 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度 ...

  5. 【Docker】Docker概述、理解docker的集装箱、标准化、隔离的思想、 docker出现解决了什么问题

    整理一下 慕课网 第一个docker化的java应用 Docker环境下的前后端分离项目部署与运维 课程时所做的笔记 Docker概述 docker - https://www.docker.com/ ...

  6. [经验交流] docker in docker 的变通实现方法

    最近在做CI持续集成环境的容器化,其中一个工作是:在容器中构建容器镜像. 对于这个需求,网上有一些 Docker in Docker 的方法,具体需要修改宿主机的配置.这种方式在单机环境下.对安全要求 ...

  7. 【Docker】docker /var/lib/docker/aufs/mnt 目录满了,全是垃圾数据,咋搞?

    命令: #!/bin/bash # 推荐方式 docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume ...

  8. jenkins和docker 使用docker作为slave

    使用docker作为jenkins slave. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd 参 ...

  9. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  10. jenkins+docker 持续构建非docker in docker jenkins docker svn maven

    工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果 本文采用jenkins docker svn maven作为相关工具,项目sprin ...

随机推荐

  1. Android 异步消息处理机制终结篇 :深入理解 Looper、Handler、Message、MessageQueue四者关系

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.概述 我们知道更新UI操作我们需要在UI线程中操作,如果在子线程中更新UI会发生异常可能导致崩溃,但是在UI线程中进行耗时操作又会导致ANR,这 ...

  2. log4net使用注意事项

    1配置Log4net Log4net的配置文件有几种使用方式,这里将配置log4net的部分独立出来,即关于log4net的配置独立成文件log4net.config. 1)写入Mysql log4n ...

  3. 蓝桥杯 密码脱落 LCS

    9. 密码脱落(后来题目说是有问题,测试用例不会有E出现) X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后 ...

  4. 源码安装pipelineDB之CentOS7

    源码下载:https://github.com/pipelinedb/pipelinedb github上面README只要是针对ubunte来安装的. 在正式安装前,要先下载好依赖的包: check ...

  5. 用python的requests第三方模块抓取王者荣耀所有英雄的皮肤

    本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...

  6. oracle 数据库中的序列

    序列是什么,通俗点说,序列就是按照一定顺序进行排列,序列会自动给你递增,生成唯一的序列号: oracle数据库不同于sqlServer数据库,oracle数据库中是没有自增长列,使用的是sequenc ...

  7. [置顶] Java WebService接口生成和调用 图文详解

    webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...

  8. Linux 两台服务器之间传输文件和文件夹

    今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎么快 ...

  9. Hibernate学习笔记(五) — 多对多关系映射

    多对多关系映射 多对多建立关系相当于在第三张表中插入一行数据 多对多解除关系相当于在第三张表中删除一行数据 多对多改动关系相当于在第三张表中先删除后添加 多对多谁维护效率都一样.看需求 在实际开发过程 ...

  10. ORACLE-015:ora-25153 暂时表空间为空,ora01652 无法通过128

    写了一个复杂的select语句,突然oracle就报了:ora-25153 暂时表空间为空,这个错误,于是网上查了下.发现了例如以下解决方法:创建一个新的暂时表空间. 首先要有system权限.登录进 ...