Docker 命令——安全

news2024/11/19 22:44:47

我们将学习两个命令。第一个命令是 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

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

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

以上步骤,并没有解释每个docker命令的含义,是比较基础的操作,如果您对以上的命令不太熟悉,可以参考我的docekr课程,有对各类命令的详细讲解:Docker 实战_在线视频教程-CSDN程序员研修院

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1867110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARM-Linux篇】项目:智能家居

一、项目概述 •项目功能 通过语音控制客厅灯、卧室灯、风扇、人脸识别开门等,可以进行火灾险情监测,可以并且实现Sockect发送指令远程控制各类家电等 •项目描述 全志H616通过串口连接各模块硬件,检测语音的识别结果,分析语音识别的结果来对家电设备进行控制。摄像头拍…

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分(14个向量,4个进程) 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题:为什么不能对这个循环并行化&#xff0…

Vue移动端动态表单生成组件

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。 帮助文档 | 源码下载…

科技赋能·创领未来丨智合同和百胜中国就Contract AI Studio项目达成合作

#智合同 #百胜中国 #AIGC #NLP #LLM #Contract AI Studio 近期,国内AIGC和LLM大语言模型发展可谓是如火如荼,其迅速崛起为社会和产业发展起到了非常重要的作用。人们利用AI技术(AIGC、LLM大语言模型、NLP等)将其赋能到企业生…

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…

Linux系统安装和卸载nginx

📖Linux系统安装和卸载nginx ✅下载✅安装✅启动nginx✅安装成系统服务✅常见问题:80端口被占用了✅卸载✅目录结构 以下介绍的是以源码编译安装方式: ✅下载 官方地址:https://nginx.org/en/download.html 123云盘地址&#x…

YOLOv8数据集标注

1 简介 数据集是必不可少的部分,数据集的优劣直接影响训练效果。一般来说,一个完整的数据集应该包括训练集、测试集和验证集。通常,数据集会被划分为训练集和测试集,比如将数据集的70%用作训练集,30%用作测试集。在进行…

【知识学习】Unity3D——Surface Shaderlightning的概念及使用方法示例

Unity3D是一个广泛使用的跨平台游戏引擎,它提供了强大的图形渲染功能。在Unity中,Shader是用于控制图形渲染过程的程序,它们运行在GPU上,用于计算屏幕上每个像素的颜色。Surface Shader和Lighting是Unity Shader编程中非常重要的概…

JAVA期末速成库(7)第七、八章

一、习题介绍 第七章 Check Point:P251 7.2,7.4,7.16,8.2 Programming Exercise:7.10,7.14,7.26 二、习题及答案 Check Point: 7.2 When is the memory allocated for an ar…

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)

介绍 石墨烯算法是一种新兴的优化算法,灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构,具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移,来求解复杂的优化问题 基本概念…

力扣每日一题 特别的排列 DFS 记忆化搜索 位运算 状态压缩DP

Problem: 2741. 特别的排列 👨‍🏫 参考题解 🍻 暴搜 ⏰ 时间复杂度: O ( N ) O(N) O(N) class Solution {public int specialPerm(int[] nums) {boolean[] visited new boolean[nums.length];return dfs(nums, 0, -1, visit…

一个Mongodb案例-使用地理信息查询酒店

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第79篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…

vue3项目登录成功后根据角色菜单来跳转指定页面(无首页)

前言:需求不想要首页,登录什么角色跳转到这个角色经常使用的页面。(例如:审核者角色的人输入用户名密码成功后就自动跳转到待审核的页面,仓库管理员登录成功则自动跳转到仓库列表) 需要解决的点和想法&…

Linux笔记之Bash脚本中的EOF

Linux笔记之Bash脚本中的EOF code review! 文章目录 Linux笔记之Bash脚本中的EOF基本用法自定义结束符变量替换禁用变量替换用于脚本嵌入重定向到文件与命令组合总结 在 Bash 脚本中, EOF 通常用于定义一个多行字符串或文档块。这种技术被称为“Here Document”&a…

python基础语法 003-3 数据类型元组

1 元组 1.1 元组含义 1.1.1 元组的表示 #元组的表示方法:() names ("xiaoyun", "xiaoming") print(names)--结果------- (xiaoyun, xiaoming) 1.1.2 空元组 #空元组 names () print(type(names)) print(len(names))----------------结果--------- &l…

802.11漫游流程简单解析与笔记_Part2_02_wpa_supplicant、cfg80211、nl80211内核与驱动的关系

wpa、cfg80211、nl80211内核与驱动的关系示意图如下: nl80211和cfg80211都是内核定义的标准接口,目的是规范驱动和应用的统一调用,wpa中常出现nl80211就是通过内核的nl80211接口调用对应cfg80211的部分,进而控制驱动收发数据或切换…

禁止浏览器对input的自动填充和填充提示(适用于谷歌、火狐、Edge(原IE浏览器)等常见浏览器)

目录 1.要解决的问题2.一技能:原生属性,小试牛刀3.二技能:傀儡input,瞒天过海4.三技能:JavaScript出击,直接开大 写在前面: 如有转载,务必注明出处,否则后果自负。 1.要解…

基于STM32设计的智能家居远程调温系统(通过红外线控制空调)_75

文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 设计的意义1.4 开发工具的选择1.5 系统框架图1.6 系统功能总结1.7 原理图二、硬件选型2.1 ESP8266-串口WIFI2.2 STM32F103C8T6开发板2.3 红外学…

已解决java.beans.IntrospectionException: 在Java Beans中内省过程失败的正确解决方法,亲测有效!!!

已解决java.beans.IntrospectionException: 在Java Beans中内省过程失败的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 检查命名规范 验证Getter/Setter匹配性 确认访问权限 审查类型一致性 简…

charls抓包工具 mumu模拟器抓包apk

1.先安装mumu 官网添加链接描述 2.配置 设置,点进互联网,点编辑,选择手动代理 主机名写自己电脑的ip地址,端口随便,只要不被占用,一般参考其他人都是8888 3.下载charls 参考这个添加链接描述 先官网…