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

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

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

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

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

FROM ubuntu:latest

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

# 切换到新用户
USER myuser

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

# 设置工作目录
WORKDIR /app

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

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

docker build -t myapp-image .

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

 
docker run -d --name myapp-container myapp-image

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

 

转自:https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E4%BB%8E%E9%9D%9Eroot%E7%94%A8%E6%88%B7%E8%BF%90%E8%A1%8Cdocker%20container%EF%BC%9F

posted @   孤独信徒  阅读(290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示