【Docker】普通用户无法使用docker命令

普通用户直接使用docker命令,会有如下提示:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1”: dial unix /var/run/docker.sock: connect: permission denied

此时我们可以选择登陆root用户,当然如果不想每次都登陆root用户,一劳永逸的解决问题,可以把普通用户添加到docker用户组里。

方法如下:
1,首先切换root用户,

su root

2,添加docker用户组

groupadd docker 

不过我没有添加过,但是用户组已存在。已存在也没啥问题。
3,添加用户

gpasswd -a 用户名 docker

4,

newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用
Docker 中以普通用户身份运行容器是一种增强容器安全性的方式,可以有效减少因容器逃逸等漏洞导致的系统级风险。以下是实现这一目标的几种主要方法: ### 1. 使用 `--user` 参数指定运行用户 在运行容器时,可以通过 `--user` 或 `-u` 参数指定容器内进程以特定的用户身份运行。该用户可以是宿主机上的某个用户 ID 和组 ID,也可以是容器内部定义的用户。 ```bash docker run -d --user $(id -u):$(id -g) my-application ``` 此命令使用当前用户的 UID 和 GID 在容器内运行进程,从而避免以 root 权限执行[^1]。 ### 2. 在 Dockerfile 中指定用户 为了确保容器默认以非 root 用户运行,可以在 Dockerfile 中使用 `USER` 指令指定运行时用户。例如: ```Dockerfile FROM alpine RUN adduser -D myuser USER myuser CMD ["sh"] ``` 这样构建的镜像在运行时会自动以 `myuser` 身份执行,无需在命令行中额外指定 `--user` 参数。 ### 3. 启用 Rootless 模式运行 Docker Daemon Docker 支持以“无根模式(Rootless mode)”运行 Docker Daemon,这意味着整个 Docker 引擎(包括守护进程和容器)都在非 root 用户上下文中运行。这种方式与 `userns-remap` 模式类似,但更进一步地移除了守护进程的 root 权限。 启用 Rootless 模式通常需要使用 `rootlesskit`,并按照官方文档配置用户级服务。这种方式适用于对安全性要求极高的场景[^1]。 ### 4. 使用用户命名空间(User Namespace) 用户命名空间是 Linux 内核的一项功能,允许将容器内的 root 用户映射为宿主机上的非特权用户。通过配置 Docker 的 `userns-remap` 选项,可以在不完全启用 Rootless 模式的情况下提升安全性。 在 Docker 配置文件(如 `/etc/docker/daemon.json`)中添加以下内容: ```json { "userns-remap": "default" } ``` 然后重启 Docker 服务即可启用该功能。此方式适用于需要兼容旧镜像但仍希望提升安全性的场景[^1]。 ### 5. 确保容器内应用以非 root 用户运行 即使容器以 root 用户启动,也可以通过应用级别的配置确保实际服务以非 root 用户身份运行。例如,在运行 SQL Server 容器时,可以通过环境变量和挂载卷确保服务以非 root 身份运行: ```bash docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \ -p 1433:1433 \ -v /host/data:/var/opt/mssql/data \ -v /host/log:/var/opt/mssql/log \ -v /host/secrets:/var/opt/mssql/secrets \ -d mcr.microsoft.com/mssql/server:2019-latest ``` 此命令确保 SQL Server 在容器内以非 root 用户身份运行,从而提升整体安全性[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值