Docker 命令——安全

我们将学习两个命令。第一个命令是 docker container run 命令,这样你就能看到使用该命令的一些好处。其次,我们将看看 docker container diff 命令,你可以用它来查看在已有的镜像基础上做了什么。让我们看看如何使用这两个命令来确保容器的安全。

Docker Run 命令

关于 docker run 命令,我们将主要关注允许将容器内的所有内容设置为只读的选项,而不是指定的目录或卷。这有助于限制恶意 "应用程序 "可能造成的破坏,因为恶意 "应用程序 "也可能通过更新二进制文件来劫持易受攻击的应用程序。让我们来看看如何启动只读容器,然后再分析它的作用,具体如下:

docker container run -d --name mysql --read-only -v /
var/lib/mysql -v /tmp -v /var/run/mysqld -e MYSQL_ROOT_
PASSWORD=password mysql

在这里,我们运行一个 MySQL 容器,并将整个容器设置为只读,但以下文件夹除外:

  1. /var/lib/mysql
  2. /var/run/mysqld
  3. /tmp

这些卷将创建为三个单独的卷,然后以读/写方式挂载。如果不添加这些卷,MySQL 将无法启动,因为它需要读/写访问权限才能在 /var/run/mysqld 中创建套接字文件,在 /tmp 中创建一些临时文件,最后在 /var/lib/mysql 中创建数据库本身。

容器内的任何其他位置都不允许写入任何内容。如果您尝试运行以下程序,就会失败:

docker container exec mysql touch /trying_to_write_a_file

前面的命令会给出如下信息:

如果可以控制容器可写入(或不可以写入)的位置,这将非常有用。请务必明智使用。彻底测试,因为当 "应用程序 "无法写入某些位置时可能会产生严重后果。

与上一条命令类似,在 docker 容器运行时,我们将所有内容都设置为只读(指定卷除外),而现在我们可以反其道而行之,只将一个卷(或更多,如果使用更多 -v 开关)设置为只读。

关于卷,需要记住的一点是,当你使用一个卷并将其挂载到容器中时,它将作为一个空卷挂载到容器内目录的顶部,除非你使用 --volumes-from 开关或在容器启动后以其他方式将数据添加到容器中;例如,你可以使用类似下面的命令:

docker container run -d -v /local/path/to/html/:/var/www/
html/:ro nginx

这将把 /local/path/to/html/ 从 Docker 主机挂载到 /var/www/html/,并将其设置为只读。如果不想让运行中的容器写入卷,以保持数据或配置文件的完整性,这将非常有用。

Docker diff 命令

让我们再来看看 docker diff 命令;由于它与容器的安全方面有关,你可能想使用托管在 Docker Hub 或其他相关存储库中的镜像。请记住,无论谁能访问你的 Docker 主机和 Docker 守护进程,他都能访问你所有正在运行的 Docker 容器。也就是说,如果你没有进行监控,就可能有人对你的容器执行命令并进行恶意操作。让我们看看在上一节中启动的 MySQL 容器:

docker container diff mysql

您会发现没有文件返回。这是为什么呢?

那么,docker diff 命令就会告诉你,自从容器启动以来,映像发生了哪些变化。在上一节中,我们启动了只读映像的MySQL容器,然后将卷挂载到我们知道MySQL需要能够读写的地方–这意味着我们下载的镜像和正在运行的容器之间没有文件差异。

停止并移除 MySQL 容器,然后运行以下操作修剪卷:

docker container stop mysql
docker container rm mysql
docker volume prune

然后,再次启动相同的容器,去掉只读标记和卷,就会得到不同的结果,如下所示:

docker container run -d --name mysql -e MYSQL_ROOT_
PASSWORD=password mysql
docker container exec mysql touch /trying_to_write_a_file
docker container diff mysql

如你所见,创建了两个文件夹,并添加了几个文件:

这是发现容器内任何不正常或意外情况的好方法

最后

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。

干货主要有:

①1000+CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2023密码学/隐身术/PWN技术手册大全

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

扫码领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值