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

如何从非root用户运行docker container?

从非root用户运行Docker容器有两种常见的方法:

  1. 使用用户命名空间(User Namespace):用户命名空间是Linux内核提供的一种机制,可以将容器内的用户与宿主机上的用户进行隔离。通过使用用户命名空间,非root用户可以在容器内以root用户的身份运行,而在宿主机上仍然以非root用户身份运行。要使用用户命名空间,需要确保宿主机的内核版本支持,并且Docker守护进程已经启用了用户命名空间功能。
  2. 使用特权模式(Privileged Mode):特权模式允许容器内的进程拥有与宿主机相同的权限,包括root权限。通过在运行容器时添加--privileged参数,可以使容器在特权模式下运行。但是,使用特权模式可能会降低容器的安全性,因此应该谨慎使用。

无论使用哪种方法,都需要确保在构建镜像时,将容器内的用户设置为非root用户,并且在容器启动时以非root用户身份运行应用程序。

以下是一个示例Dockerfile,演示如何在容器内以非root用户身份运行应用程序:

代码语言:txt
复制
FROM ubuntu:latest

# 创建一个新的用户
RUN useradd -ms /bin/bash myuser

# 切换到新用户
USER myuser

# 将应用程序复制到容器中
COPY myapp /app

# 设置工作目录
WORKDIR /app

# 运行应用程序
CMD ["./myapp"]

在构建镜像时,可以使用以下命令:

代码语言:txt
复制
docker build -t myapp-image .

然后,可以使用以下命令以非root用户身份运行容器:

代码语言:txt
复制
docker run -d --name myapp-container myapp-image

请注意,上述示例仅适用于演示目的,实际应用中可能需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

    应用容器化之后,在docker容器启动时,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢,下面我将举一个简单的例子来说明。该例子是在容器中使用自建的用户来运行一个简单的shell脚本,并将脚本输出日志持久到容器外部。接下来让我们来看从制作镜像到容器运行的全过程吧。 1、构建镜像: 我将会使用dockerfile的方式来构建镜像,基础镜像使用ubuntu 14.04(需要先拉取该镜像,docker pull ubuntu:14.04)。dockerfile内容如下 [root@host09 test]# cat Dockerfile FROM docker.io/ubuntu:14.04   MAINTAINER hepengfei RUN groupadd hpf  --创建用户组 RUN useradd -d /data -g hpf -m hpf   --创建用户 RUN su - hpf -c "mkdir -p /data/scripts"  RUN su - hpf -c "mkdir -p /data/logs" WORKDIR /data/scripts COPY test.sh /data/scripts/ RUN chown hpf:hpf test.sh RUN chmod 755 test.sh ENTRYPOINT su - hpf -c "/data/scripts/test.sh" --使用所创建的用户来运行脚本 [root@host09 test]#

    01
    领券