Docker使用虽无风验,但仍需小心

简介: 本文讲的是Docker使用虽无风验,但仍需小心【编者的话】本文主要介绍了Docker使用过程的风险误区以及需要留意的风险,本文日文版请看は危険という誤解と、本当に注意すべき点。
。

Docker的快速增长得益于它不仅是一款简单、易用的轻量虚拟环境的工具,而且它还有自己特有的概念,并且越来越多的特性的添加。有时不是很容易获取有关于它们的正确信息,从而造成误解。

尤其是,安全隐患常常随着情绪被高估或低估而非基于正确信息。但是为了 让Docker成为方便、安全的工具,了解准确的信息去使用Docker是至关重要的。

因此,该篇文章我会描述Docker容器的安全性和一些要注意的地方。

迷信使用Docker是有风险的

仅运行中的容器就会危及Docker宿主机

由于容器是运在隔离的环境中,仅仅是运行容器(没有其他选项)不会暴露Docker宿主机给容器的。 截至目前,没有已知的案例,仅仅运行容器就导致了恶意容器去入侵Docker主机或其他容器。

如果Docker宿主机与容器共享了目录或文件,容器就可以访问Docker宿主机。但除非明确地共享(如使用-V选项),否则宿主机的目录或文件不会与容器共享。

同样除非明确将容器的网络端口打开给Docker宿主机(通过-p,-P选项),Docker宿主机外面的任何容器都不能连接到容器上。

需要注意的是,相对于虚拟机, 容器与操作系统结合的更加紧密。因此,相对大的可能存在未知的安全漏洞且攻击者会滥用这些漏洞 ,尤其当使用根用户运行容器时。始终更新到最新版本或修复安全补丁,并留意最新的安全消息。考虑使用非根用户运行容器或使用用户命名空间。安装安全软件也是情理之中的。

容器的根用户和Docker宿主机的根用户一直是同一个

过去没有办法为容器区分用户IDE空间,容器和宿主机一直共享根用户。

但从1.10版本开始,就可以使用用户命名空间,Docker宿主机和容器间可以有独立的根用户。 尽管有容器和主机之间多重屏障,但因为根用户可以做太多事情,有可能存在一个洞访问到Docker宿主机。容器中使用非根用户可以让Docker容器更加安全。

Docker一直不应允许容器去访问宿主机。

管理Docker系统的容器显然自身需要访问Docker宿主机去管理Docker系统。例如,Shipyard(容器管理工具)或nginx-proxy(通过挂钩容器事件设置代理)都需要访问Docker系统。

Docker容器容易遭受Fork炸弹

译者注:Fork炸弹是指不断调用Fork使系统资源耗尽,从而导致系统拒绝服务甚至崩溃。

过去,没有直接的方法进行保护以免遭Fork炸弹之害,但是Docker 1.11引进了 --pid --limits 选项,它可以限制容器上的进程数量从而保护不受Fork之害。

需要注意的事情

虽然使用Docker没有必要过度担心,但有些关于Docker的安全性的事情需要留心。

运行容器作为互联网服务器

如果运行一个容器作为一个互联网服务器,应该像通常的服务器重视它的安全性。设置相应的访问控制,并留意服务器和应用程序的安全性问题。

永远不要运行不可信的Docker镜像作为互联网服务器,避免运行不完全理解的Docker镜像作为互联网服务器。

Docker不会打开容器网络端口除非明确指定打开。当运行Docker宿主机在虚拟机上,容器并没有开放给互联网(除非虚拟机对互联网开放的),如果你在PC(Windows,MAC)上使用Docker,它的防火墙或路由器将保护容器免受来自互联网的连接的伤害(除非你明确允许)。

Docker 命令选项(共享文件、开放端口)

重视Docker命令选项。

尤其是,如果你设置文件共享选项(例如:-v),则允许容器访问Docker宿主机。当共享Socket文件时,如(docker.sock),此时允许容器去管理Docker,要小心这些。 不要共享太多的文件,仅共享需要和容器共享的文件。

如果你打开了容器的网络端口,Docker宿主机是对互联网是开放的,此时容器是能够从互联网上访问到。如果你没有合适的访问控制,攻击者可能侵入容器。当打开容器的网络端口时,需设置合适的访问控制。
如果Docker镜像不是稳定版,就要考虑不开放网络端口或明确禁用网络连接(-net=none)。

运行未知脚本

除了Docker,永远不要运行未知脚本,因为这是很危险的。风险不仅是入侵Docker或Docker宿主机,而且它可能是一个恶意脚本,会删除所有文件或安装病毒、蠕虫、木马。

留意你得到脚本的方式,无论提供脚本的网站是否可靠与否,是否使用HTTPS(SSL)下载。同时你也可以阅读查看脚本。

运行未知容器

恶意的或有问题的容器可能滥用地接入互联网,或不必要地消耗CPU或内存资源。

一些有名的登记库如Docker Hub的官方镜像具有相对较小的风险。但是不明网站提供的未知容器将会是高风险。

评估Docker镜像的风险,并在必要时,禁用网络访问或限制对资源的访问。

小结

Docker是一个简单和易于使用的工具,它同时具有良好的部分和风险。尤其是,当你开放容器的网络端口到互联网上,像通常的互联网服务器一样重视。

Docker让你自由地瞬间创造和毁灭的环境。 如果你使用可信Docker镜像同时不开放容器的网络端口到互联网上,Docker是没有冒险的。
不要太恐惧,但使用Docker要理解其概念、行为和用法。

原文链接:Using Docker is not risky. But, there are things to look out for.(翻译:杨庆伟 校对:田浩浩)
999.png
原文发布时间为: 2016-06-29
本文作者: 杨庆伟
本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。
原文标题:Docker使用虽无风验,但仍需小心
相关文章
|
网络协议 安全 Shell
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
2792 0
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
|
6月前
|
存储 监控 算法
大模型应用:算力分层治理:基于大模型算力四层匹配体系的优化方案.72
本文剖析大模型算力困局,指出“加卡低效”的根源在于忽视计算、访存、调度三层算力的协同失衡。提出四层匹配体系(计算/存储/通信/业务层),通过精度适配、显存优化、通信算法选择及场景化调度等实操方法,实现算力精准治理,让硬件投入真正转化为落地效率。
503 9
|
存储 安全 Windows
硬盘出现问题怎么修复?这些硬盘修复工具别错过
电脑硬盘出现卡顿、文件打不开、频繁报错、蓝屏或异响,可能是硬盘故障前兆。硬盘一旦损坏,数据可能丢失,及时检测修复至关重要。本文推荐CHKDSK、DiskGenius、SeaTools等实用工具,教你检测坏道、尝试修复,并提供备份建议与进阶屏蔽坏道技巧,助你延长硬盘寿命,避免数据损失。
|
监控 安全 Linux
docker 命令 --cap-add NET_ADMIN 什么作用
`--cap-add NET_ADMIN` 是 Docker 容器运行时的一个参数,用于添加网络管理员权限(NET_ADMIN capability)给容器。 在 Linux 系统中,每个进程都有特定的权限来执行特定的操作。网络管理员权限是一种较高级的权限,它允许容器内的进程执行一些需要网络配置和管理的操作,例如配置网络接口、修改路由表、设置防火墙规则等。 通过添加 `--cap-add NET_ADMIN` 参数,Docker 容器将获得网络管理员权限,使其能够执行更高级的网络操作。这对于某些特定的应用场景,如网络监控、网络测试等非常有用。 需要注意的是,使用网络管理员权限可能存在安全
3806 1
|
机器学习/深度学习 人机交互 API
【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战
【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战
7047 0
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
860 4
|
机器学习/深度学习 存储 人工智能
如何玩转Kubeflow Pipelines
 1. 背景近些年来,人工智能技术在自然语言处理、视觉图像和自动驾驶方面都取得不小的成就,无论是工业界还是学术界大家都在惊叹一个又一个的模型设计。但是对于真正做过算法工程落地的同学,在惊叹这些模型的同时,更多的是在忧虑如果快速且有效的将这些模型落地到业务中,并产生商业价值。正如Google 《Hidden Technical Debt in Machine Learning Systems》中说的
如何玩转Kubeflow Pipelines
|
Java 数据库 Maven
谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
项目介绍、项目环境搭建、docker配置mysql,redis,jdk,maven、人人开源、快速开发、安装nodejs、逆向工程搭建,人人开源代码生成器
谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
|
算法 编译器 C++
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)

热门文章

最新文章