首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在docker容器中使用非root用户执行脚本 (

应用容器化之后,在docker容器启动时,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢,下面我将举一个简单的例子来说明...dockerfile内容如下 [root@host09 test]# cat Dockerfile FROM docker.io/ubuntu:14.04   MAINTAINER hepengfei.../hpf.log  --将日志输出到文件,启动容器的时候做持久化 sleep 1 done [root@host09 test]# 接下来让我们来构建镜像: [root@host09 test...@host09 test]# 查看所构建的镜像: [root@host09 test]# docker images REPOSITORY         TAG                ...[root@host09 test]# chmod 777 /data/hepf/log [root@host09 test]# docker run -it -v /data/hepf/log:/

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Docker容器内执行 jvm 分析工具命令

    作者: 张首富 时间: 2021-02-01,2022-01-10 前言 目前我们公司使用的基本上都是java开发的后端,本文详细的介绍了公司java程序docker 包构建的演变过程,这里面不对java...docker 镜像的演变过程 最初的时候我们只想着给java包怎么放到docker 镜像中,我们使用了如下的Dockerfile FROM openjdk:8u212-jre-alpine ENV TZ...,(docker 不能优雅的stop 请查看我这篇文章https://www.cnblogs.com/shoufu/p/12978843.html) 然后给Docker 添加一个init 进程放在主进程...容器里面发现没有 jmap等指令,需要通过如下命令去安装即可 apk add openjdk8 本着docker 镜像最小原则,就没有把它安装到所有的docker镜像中去。...到此公司的java包docker 镜像构建完毕

    1.3K20

    思科修复了允许攻击者以root身份执行命令的BUG

    近期,思科解决了Cisco Nexus Dashboard数据中心管理解决方案中的严重漏洞,这些漏洞可让远程攻击者以root或管理员权限执行命令和操作。...第一个安全漏洞(被评为严重严重性漏洞,编号为 CVE-2022-20857)使未经身份验证的威胁参与者能够通过发送HTTP 请求来访问API,并以root 权限远程执行任意命令。...第二个漏洞(Web UI 中的一个高严重性漏洞,编号为 CVE-2022-20861)允许远程攻击者通过欺骗经过身份验证的管理员单击恶意链接来进行跨站点请求伪造攻击。...对此,思科也作出了解释,利用该漏洞可能允许攻击者在受影响的设备上以管理员权限执行操作。...而近期修补的另一个高严重性安全漏洞 (CVE-2022-20858) 可以让未经身份验证的远程攻击者通过打开与容器镜像管理服务的TCP连接来下载容器镜像或将恶意镜像上传到受影响的设备。

    40120

    docker 非root用户修改mount到容器的文件出现“Operation not permitted

    使用环境centos7 x86-64 内核版本4.19.9 docker使用非root用户启动,daemon.json配置文件内容如下: # cat daemon.json { "userns-remap...的范围,在docker上查看init进程映射到root namespace的uid范围,可以看到根进程映射到231072,最大映射的uid为231072+65536。...-rw-r--r--. 1 root root 0 Dec 18 08:49 test.sh 根据上述配置,容器的root用户拥有root namespace下uid [231072,231072...user namespace,以系统root用户执行操作 当程序执行对文件(目录)的操作时,其进程的EUID必须与文件(目录)的EUID保持一致,上述的test.sh是由root namespace的root...TIPS: docker默认启动是不会创建user namespace的 如果需要把docker数据持久化,最好使用docker volumes的方式,bind mount由于需要有操作host系统目录的权限

    5.2K20

    【Docker系列】Docker 容器命令执行状态码的检查与分析

    在 Docker 容器化技术日益普及的今天,容器的运行状态和健康检查成为了运维人员和开发者关注的焦点。...了解如何在 Docker 容器中执行命令并检查其退出状态码,对于确保容器服务的稳定性和可靠性至关重要。...一.手动执行命令并查看退出状态码 在 Docker 容器中执行命令后,我们可以通过两种方式来查看命令的退出状态码。 方法一:使用echo $? 在容器中运行命令后,使用echo $?...这是一个非常直接的方法,可以快速地告诉我们命令是否成功执行。例如,我们可以在容器中执行一个curl命令来检查服务的健康状态,并通过grep来匹配预期的输出。...方法二:使用docker inspect Docker 的健康检查机制会记录健康检查命令的执行状态和退出码。我们可以通过docker inspect命令来查看这些信息。

    10700

    Docker镜像与容器的交互及在容器内部执行代码的原理与实践

    Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。...Docker镜像与容器的交互 创建容器:首先,我们需要使用Docker镜像创建一个容器。通过使用Docker命令行或Docker API,我们可以指定所需的镜像和容器配置选项来创建容器。...此外,Docker还支持网络连接、共享文件卷等功能,以便容器与其他容器或主机之间进行通信和数据共享。 在容器内部执行代码的原理与实践 命令行交互:在容器内部执行代码最简单的方式是通过命令行交互。...例如,在Dockerfile中添加以下指令: COPY startup.sh /root/ CMD ["/bin/bash", "/root/startup.sh"] 这样,每次启动容器时,Docker...这时,我们可以使用容器编排工具(如Docker Compose或Kubernetes)来管理和编排多个容器。

    12410

    CentOS7中Docker文件挂载,容器中没有执行权限

    在CentOS7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录。...原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1,在运行容器的时候,给容器加特权: 示例:docker run -i -t --privileged...=true -v /home/docs:/src waterchestnut/nodejs:0.12.0 2,临时关闭selinux: 示例:su -c "setenforce 0" 之后执行:docker...命令:su -c "setenforce 1" 3,添加selinux规则,将要挂载的目录添加到白名单: 示例:chcon -Rt svirt_sandbox_file_t /home/docs 之后执行...:docker run -i -t -v /home/docs:/src waterchestnut/nodejs:0.12.0

    1.8K30

    docker mysql 容器中执行mysql脚本文件并解决乱码

    docker 容器中执行mysql脚本文件并解决乱码 网上搜索了一大推,在容器mysql中执行一段代码这么难吗?搞得十分复杂。 于是自己记录一下,虽然简单,但是还是怕后面忘记掉,又搜大半天。...现在的需求是将我的sql文件导入进来,然后让docker中的mysql 来执行它。...注意mysql在docker容器中,如果你只导入到宿主机,然后进入容器去执行sql文件的话,一定会告诉你是打不开的,因为宿主机外部和容器内部是相对隔离的,不可能在容器内部去找宿主机的路径。...docker ps 然后我们通过id 去指定容器,这个也就是mysql容器的id 我们通过这个命令就可以进去到容器,我们进去到这里呢,句可以在这里去登录mysql,然后执行脚本。...有的 在容器中执行,就用容器中的路径,和宿主机路径无关。

    2.3K30

    【容器安全系列Ⅱ】- 容器隔离与命名空间深度解析

    我们可以使用它在容器内执行命令,而无需安装或使用 Docker CLI。...您可以使用User命名空间来启用这些应用程序,而不会引入以主机的 root 用户身份运行包含的进程的风险(许多容器运行时的常见默认设置)。    ...可以在容器运行时(如 Docker)上启用User命名空间。在其他运行时上,例如 Podman,默认情况下已启用此功能。...此外,如果我们尝试删除只有 root 用户才能访问的文件,它将失败。     如果您尝试以非 root 用户身份启动新的用户命名空间,则该命名空间不起作用,则此功能可能在主机级别被阻止。...结论    Linux 命名空间是 Docker 等容器运行时工作方式的基础部分。我们已经了解了它们如何以多种方式为容器的主机资源视图提供细粒度隔离。

    17110

    Docker暴露2375端口导致服务器被攻击解决方法!

    这个应该要从几个点说起吧: 1. docker对user namespace没有做隔离,也就是说,容器内部的root用户就是宿主机的root用户,一旦挂载目录,就可以在容器内部以宿主机的root用户身份对挂载的文件系统随意修改了...docker服务拥有很高的执行权利(相当于root),并且在docker用户组下的普通用户不需要任何其他验证就可以执行docker run等命令。...key覆盖了,可以选着/tmp/id_rsa # 其他提示enter到底即可 继续,注入ssh pub key,回到刚刚启动的容器执行 cat >> /tmp/root/.ssh/authorized_keys...已经Warning告知:如果将daemon直接暴露在一个TCP端口,将可能会被以非root用户去获取宿主机的root权限。其实上面的说提到的服务器之所以这么容器被入侵,也正是这个原因。...何以防之 那么,问题来了,如果想用Remote API,又不想有被入侵的风险,怎么办呢?

    3.1K21

    如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用

    在现代应用程序开发和部署中,容器化技术已经成为一种常见的选择。Docker 容器的优势在于其轻量级、可移植性和可扩展性,但在更新容器时可能会面临停机时间的问题。...本文将详细介绍如何以零停机时间或最少停机时间更新 Docker 容器,以确保应用程序持续可用。图片1....使用容器编排工具容器编排工具(如Kubernetes、Docker Swarm等)可以帮助管理和调度容器,从而实现高可用性和零停机时间更新。...滚动更新的过程如下:首先,容器编排工具启动一个新的容器实例,同时保持旧版本的容器实例运行。新版本容器实例开始接收流量并处理请求。逐步增加新版本容器实例的数量,同时逐渐减少旧版本容器实例的数量。...结论以零停机时间或最少停机时间更新 Docker 容器是确保应用程序持续可用的重要步骤。

    1.3K20

    dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因

    targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: “CreateAppHost”任务意外失败 可能的原因是 docker 内之前的容器没有关闭...关注输出窗口,如果可以看到如下内容,那么就是 docker 内存在上次运行的容器没有关闭 1>docker exec -i 93b62c811acccda3232d8a18072f54991fc03198f646b810f8da08351d46daf5...microsoft.visualstudio.azure.containers.tools.targets\1.10.8\build\Container.targets(138,5): warning CTP1006: 未能在容器中停止应用程序...d__26.MoveNext() 解决方法就是通过命令结束 docker 容器 使用 docker ps 命令找到所有在运行的实例,使用 docker...kill 命令杀掉正在运行的实例,重新在 VS 按下 F5 开始调试就可以 关于 docker 命令请看 docker常用命令-docker kill_OneZeroTwoFour-CSDN博客 VisualStudio

    1.6K30

    理解 Docker 容器中 UID 和 GID 的工作原理

    如果没有提供其他选项,容器中的进程将以root用户身份执行(除非在Dockerfile中提供了不同的UID)。本文将解释这一工作原理,如何正确授予权限,并提供示例加以说明。...Ss 19:49 0:00 sleep infinity 尽管我从未输入过sudo,也不是root用户,但我执行的sleep命令以root用户身份启动并具有root权限。...我如何知道它具有root权限?容器内的root是否等同于容器外的root?是的,因为正如我提到的,有一个单一的内核和一个共享的uid和gid池。...当我启动容器时,sleep 命令以 appuser 的身份执行,因为 Dockerfile 包含了“USER appuser”这一行。...我创建了容器以1001用户身份启动。因此,当我执行诸如ps或top(或大多数监控工具)之类的命令时,进程映射到“marc”用户。

    46210
    领券