总结之Docker(四)——镜像修改非ROOT用户权限后生成新镜像并发布

Docker拉去目标镜像

docker pull redis:6.2.5
如果出现拉去过程超时,或者连接失败。

添加镜像加速器,以阿里云为例,阿里云目前推广提供镜像加速器,需要登录。
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
生成的加速器地址,后面有教学如果使用加速器。

以windows为例

在Docker daemon加入(每个人地址不一样)

"registry-mirrors": [
    "https://jhtiz.mirror.aliyuncs.com"
  ]

在这里插入图片描述

创建Dockerfile

先在本地创建Dockerfile文件
编辑Dockerfile文件

FROM  redis:6.2.5

USER root

RUN groupadd -g 1001 bigdata && useradd -m -u 1001 -g bigdata  bigdata

RUN  chown -R 1001:1001  /opt/* && chown -R 1001:1001 /tmp /mnt

USER 1001

生成新镜像

docker build -t my-redis:0.0.1  d:/mydockerfiles

记得修改目录权限时,不能照抄,如下:
在这里插入图片描述
这里没有 /opt/* 文件或目录

这里要根据具体镜像内容和文件权限来

运行新镜像

查看镜像

docker images

运行新镜像id
-i: 交互式操作。
-t: 终端。

docker run -it 5a6ec30c0ef4

或者

docker run -d 5a6ec30c0ef4
出现无权限
应用生成日志没有权限 permission denied

或者

Unable to create directory required for Rundeck repository. Please ensure the file: /home/rund/repository exists and that Rundeck has write access to the directory. 

需要在Dockerfile中先调整目录权限、先创建目录

...
RUN groupadd -g 1001 bigdata && useradd -m -u 1001 -g bigdata bigdata && 
#创建目录
RUN mkdir -p /home/rund/repository
# 在切换用户之前调整日志目录权限
RUN mkdir -p /app/logs && chown -R bigdata:bigdata /app/logs

...

# 切换到非root用户
USER 1001

如果您希望更通用地解决权限问题,确保用户1001(或任何指定用户)对容器内所有需要访问的目录和文件都有适当的权限,可以采取以下策略:

使用通配符:
如果有多个目录或文件需要赋予权限,可以使用通配符来匹配一系列路径。例如,如果您需要对所有位于/home/rund/下的目录和文件进行权限设置,可以这样做:

Dockerfile

RUN chown -R 1001:1001 /home/rund/*

注意,这种方式不会递归地处理新创建的目录或文件。如果需要递归处理,您可能需要明确列出每个主要目录。

递归赋权:
对于需要递归处理的目录,确保使用-R标志。如果您知道容器启动过程中可能会动态创建某些目录或文件,可以预见到这些位置,并提前设置好权限。例如,如果除了/home/rundeck/外,还有其他几个目录需要赋权,可以逐一处理:

Dockerfile

RUN chown -R 1001:1001 /home/rund \
    && chown -R 1001:1001 /var/log/myapp \
    && chown -R 1001:1001 /etc/myapp/conf.d

创建和赋权结合:
如之前提到的,在创建目录的同时进行权限设置,确保新创建的目录直接归指定用户所有:

Dockerfile

RUN mkdir -p /path/to/new/dir && chown -R 1001:1001 /path/to/new/dir

使用setgid位:
对于某些需要用户组内成员共同协作的目录,可以设置setgid位,这样任何用户在该目录下创建的文件都会继承该目录的组所有权。这可以通过chmod g+s实现:

Dockerfile

RUN chmod -R g+s /home/rund/shared

使用临时的root命令执行脚本:
如果有复杂的权限设置逻辑,可以编写一个脚本,该脚本执行所有的权限设置逻辑,然后在Dockerfile中使用USER root执行这个脚本,最后再切换回非root用户。这样可以保持Dockerfile的清晰度和可维护性。

记住,虽然赋予非root用户足够的权限很重要,但也应当遵循最小权限原则,只给予执行任务所需的最小权限,以增强容器的安全性。

把新镜像推送到阿里云

先登录

docker login --username=153351 registry.cn-hangzhou.aliyuncs.com

推送

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/imaniy/bigdata:[镜像版本号]

 docker push registry.cn-hangzhou.aliyuncs.com/imaniy/bigdata:[镜像版本号]

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

闲置资源共享平台

摘 要 随着共享经济的高速发展以及人们对物品的需求方面也越来也丰富,而且各大高校的大学生们的购买力也越来越强,随之而来的问题就是身边的闲置资源也越来越多,但是也有许多的大学生对物品的要求方面不是很高,也愿意买下经济实惠…

06 PXE高效批量网络装机

1、部署PXE远程安装服务 在大规模的Linux应用环境中(如Web集群、分布式计算等),服务器往往并不配装备光驱设备。 在这种情况下,传统的USB光驱、移动硬盘等安装方法显然已经难以满足需求。 那么如何为数十台服务器裸机快速安装系…

坚持刷题|反转链表

文章目录 题目思考实现1. 迭代方式实现链表翻转2. 递归方式实现链表翻转 Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表 题目 LCR 024. 反转链表 思考 翻转链表是一个常见的算法问题&a…

小主机折腾记录27

1.买了一个9600k,3根台电 4G 2666 极光A40,一根台电8G2666 极光A40,一根国惠8G2666,一个惠普3热管散热器 测试结果如下 1)三根台电 4G2666 相互兼容,频率2667显示正常,显示为美光颗粒&#xff0…

YOLOv8改进 | 卷积模块 | 用坐标卷积CoordConv替换Conv

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录:《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容,内含各种Head检测头、损失函数Loss、B…

搜维尔科技邀您共赴2024第四届轨道车辆工业设计国际研讨会

会议内容 聚焦“创新、设计、突破”,围绕“面向生命健康、可持续发展的轨道交通系统” 为主题,从数字化、智能化、人性化、绿色发展等方面,探索轨道交通行业的设计新趋势及发展新机遇。 举办时间 2024年7月10日-12日 举办地点 星光岛-青岛融…

STM32F4 STD标准库串口接收中断+空闲中断例程

STM32F4 STD标准库串口接收中断空闲中断例程 🔖工程基于STM32F446 ✨用惯了STM32CubeMX傻瓜式配置,突然改用标准库写代码,初始化外设内容,总是丢三落四的。 📗串口初始化配置 void uart_init(uint32_t bound) {//GPIO…

分析师:是什么导致山寨币在本轮周期表现不佳?

在加密货币领域,山寨币的过度分散化问题逐渐凸显,成为本轮周期内其表现疲软的核心因素。经过深入研究,我发现这种分散化对加密货币市场的整体健康造成了严重威胁。然而,令人遗憾的是,目前看来,我们尚未找到…

Java基础 - 练习(三)打印空心菱形

Java基础练习 打印空心菱形&#xff0c;先上代码&#xff1a; public static void diamond() {//控制行数for (int i 1; i < 4; i) {//空格的个数for (int k 1; k < 4 - i; k) {System.out.print(" ");}//控制星星个数的时候和行有关for (int j 1; j <…

【第20章】Vue实战篇之Vue Router(路由)

文章目录 前言一、使用Vue-Router1.安装2. 创建路由器实例3. 注册路由器插件4. 根组件 二、访问路由器1.理论2.使用3. 展示 三、嵌套路由(子路由)1. 准备文件2. 配置路由3. 菜单配置4. 展示 总结 前言 Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成&#xff0c;…

【机器学习】第2章 线性回归及最大熵模型

一、概念 1.回归就是用一条曲线对数据点进行拟合&#xff0c;该曲线称为最佳拟合曲线&#xff0c;这个拟合过程称为回归。 2.一个自变量 叫 一元线性回归&#xff0c;大于一个自变量 叫 多元线性回归。 &#xff08;1&#xff09;多元回归&#xff1a;两个x&#xff0c;一个…

BUU CODE REVIEW 11 代码审计之反序列化知识

打开靶场&#xff0c;得到的是一段代码。 通过分析上面代码可以构造下面代码&#xff0c;获取到序列化之后的obj。 <?php class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(u…

森林之下延迟高如何处理 森林之下联机卡顿的解决方法

森林之下是一款结合了农场模拟、恐怖生存的游戏&#xff0c;玩家需要管理一个被“闹鬼的树林”包围的农场&#xff0c;种植农作物&#xff0c;拯救、驯服、饲养动物&#xff0c;探索被诅咒的森林&#xff0c;并且收集物品来破除诅咒。这款游戏目前已经开放了demo&#xff0c;不…

基础模型服务商SiliconCloud,新注册用户赠送 14 元的配额(约 1 亿 token)

注册链接&#xff1a;https://cloud.siliconflow.cn?referrerclx1f2kue00005c599dx5u8dz 开源模型可以自己部署&#xff0c;对服务器的要求还是挺高&#xff0c;以及学习成本、部署过程成本都是比较高&#xff0c;硅基流动SiliconFlow提供了另一个方式&#xff0c;可以像使用…

Java new HashMap 指定容量,代码怎么写? 学习源码小记

之前针对 创建map 指定容量&#xff0c;写过一篇吐槽教学文章&#xff1a;HashMap 使用的时候指定容量&#xff1f;你真的用明白了吗&#xff1f;&#xff08;值得一阅&#xff09;_new hashmap<>(4);-CSDN博客 因为我们经常要通过代码做一些数据的分组&#xff0c;比如查…

Unity2D游戏制作入门 | 14( 之人物实装攻击判定 )

上期链接&#xff1a;Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )-CSDN博客 上期我们聊到给人物添加三段攻击的动画&#xff0c;通过建立新的图层动画当我们按下攻击按键就会自动切换进攻击的动画&#xff0c;如果我们连续按下攻击键&#xff0c;我们还可以进行好几段的攻击…

Simulink代码生成: 基本数据类型

文章目录 1 引言2 Simulink中的基本数据类型3 数据类型实例3.1 浮点类型3.2 整数类型3.3 布尔类型 3 数据类型使用的注意点3.1 浮点数等于比较3.2 整形数溢出3.3 布尔类型的位域 4 关于定点数的说明5 总结 1 引言 正如C语言中为变量区分了不同的数据类型一样&#xff0c;Simul…

三个“消失” 折射债市新变化

资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔夜”也在逐渐减少。 当前&#xff0c;债券市场正在出现一系列显著变化&#xff1a;资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔…

天润融通:AI助手助力Klarna实现多语言客户服务革新

AI 助手可以在客户服务上发挥多大的作用&#xff1f;瑞典一家金融科技公司Klarna的尝试用数据说明了一切。 作为一家全球领先的“先买后付” (BNPL) 服务提供商&#xff0c;Klarna的业务覆盖全球45个国家&#xff0c;拥有1.5亿活跃用户&#xff0c;每天交易量达到200万笔。 为…

DuDuTalk:智能电子录音工牌在销售场景的应用价值

在快速变化的市场环境中&#xff0c;销售团队面临着日益激烈的竞争和不断变化的客户需求。为了提升销售效率、优化客户体验并加强团队协作&#xff0c;越来越多的企业开始采用智能电子录音工牌作为销售场景中的关键工具。本文将从多个方面探讨智能电子录音工牌在销售场景中的应…