Docker(十):Docker安全
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安全的更多相关文章
- Docker(十)-Docker创建DockerFile文件
制作Docker image 有两种方式: 使用 Docker container,直接构建容器,再导出成 image 使用. 是使用 Dockerfile,将所有动作写在文件中,再 build 成 ...
- SpringCloud(十) - Docker
1.Docker安装 1.1 卸载旧版本(否者会安装出错) sudo yum remove docker \ docker-client \ docker-client-latest \ docker ...
- Docker(十六)-Docker的daemon.json的作用
docker安装后默认没有daemon.json这个配置文件,需要进行手动创建.配置文件的默认路径:/etc/docker/daemon.json 一般情况,配置文件 daemon.json中配置的项 ...
- docker 系列 - Docker 安装和Hub Mirror地址设置
======================为什么要使用Docker?======================= 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度 ...
- 【Docker】Docker概述、理解docker的集装箱、标准化、隔离的思想、 docker出现解决了什么问题
整理一下 慕课网 第一个docker化的java应用 Docker环境下的前后端分离项目部署与运维 课程时所做的笔记 Docker概述 docker - https://www.docker.com/ ...
- [经验交流] docker in docker 的变通实现方法
最近在做CI持续集成环境的容器化,其中一个工作是:在容器中构建容器镜像. 对于这个需求,网上有一些 Docker in Docker 的方法,具体需要修改宿主机的配置.这种方式在单机环境下.对安全要求 ...
- 【Docker】docker /var/lib/docker/aufs/mnt 目录满了,全是垃圾数据,咋搞?
命令: #!/bin/bash # 推荐方式 docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume ...
- jenkins和docker 使用docker作为slave
使用docker作为jenkins slave. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd 参 ...
- .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行
本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...
- jenkins+docker 持续构建非docker in docker jenkins docker svn maven
工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果 本文采用jenkins docker svn maven作为相关工具,项目sprin ...
随机推荐
- Function Programming - 纯函数(Pure Function)
纯函数的定义,非常重要!! Pure function 意指相同的输入,永远会得到相同的输出,而且没有任何显著的副作用. 老样子,我们还是从最简单的栗子开始: var minimum = 21; va ...
- redis 梳理笔记(一)
一 redis 数据格式 短连接 长连接pconnect tcp协议 交互数据格式 交互采用特殊的格式 \r\n 1."+"号开头表示单行字符串的回复 set aa aa ...
- viewer.js的简单练习
html <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8& ...
- Django contrib Comments 评论模块详解
老版本的Django中自带一个评论框架.但是从1.6版本后,该框架独立出去了,也就是本文的评论插件. 这个插件可给models附加评论,因此常被用于为博客文章.图片.书籍章节或其它任何东西添加评论. ...
- vue搭建环境
大早起的,没想自己起来那么早,既然起来了,就写点东西吧~最近在看Vue的东西,发现网上也是好多的资源,包括博客和视频 , 我是看的慕课网上的vue ,名字忘记了,价格148的,看了,也整理了笔记,看了 ...
- hdu 1150 Machine Schedule 最小覆盖点集
题意:x,y两台机器各在一边,分别有模式x0 x1 x2 ... xn, y0 y1 y2 ... ym, 现在对给定K个任务,每个任务可以用xi模式或者yj模式完成,同时变换一次模式需要重新启动一次 ...
- 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层
这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...
- Android开发之漫漫长途 Ⅷ——Android Binder(也许是最容易理解的)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- RecyclerView高速通用适配Adapter
RecyclerView Adapter 为RecyclerView提供更简单的适配器实现方式,不断更新完好中. Demo视频演示 GitHub地址 博客 使用 BaseViewHolder 的使用 ...
- HTML中在a标签中添加onclick事件
1.链接的onclick 事件被先执行,其次是href属性下的动作; 2.假设链接中同时存在href 与onclick,如果想让href 属性下的动作不执行,onclick 必须得到一个false的返 ...