非Root用户启动docker容器
时间: 2023-07-08 12:48:42 浏览: 59
可以通过在非Root用户的账户中添加到docker用户组来启动docker容器。具体步骤如下:
1. 添加docker用户组
```
sudo groupadd docker
```
2. 将当前用户添加到docker用户组
```
sudo gpasswd -a ${USER} docker
```
3. 重新登录当前用户
4. 验证当前用户是否已经加入docker用户组
```
docker info
```
5. 启动docker容器
```
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
```
需要注意的是,非Root用户启动容器时,容器内的进程将以该用户的身份运行。
相关问题
root用户下启动docker防火前
如果你是使用 root 用户运行 Docker,可以按照以下步骤启动 Docker 防火墙:
1. 停止 Docker 服务:
```
systemctl stop docker
```
2. 启用 Docker 防火墙:
```
iptables -P FORWARD DROP
iptables -A FORWARD -i docker0 -o docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o docker0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
```
这些命令会设置默认策略为 DROP,即拒绝所有转发流量;同时允许 Docker 容器之间和容器与宿主机之间的流量,以及容器访问外部网络的流量;最后设置 NAT 规则,使容器可以访问外部网络。
3. 重新启动 Docker 服务:
```
systemctl start docker
```
这样就可以启动 Docker 防火墙了。需要注意的是,启用防火墙可能会影响容器网络通信,建议在安全环境下使用。
普通用户可以特权方式启动docker容器吗?docker run --privileged
默认情况下,只有 root 用户才能使用 `--privileged` 参数启动 Docker 容器,因为该参数会让容器拥有访问宿主机系统资源的特权。如果使用普通用户启动容器,会提示权限不足的错误。
不过,您可以通过配置 Docker 守护进程来允许普通用户启动特权容器。具体来说,您需要将普通用户添加到 `docker` 用户组中,并将 Docker 守护进程配置为允许该用户组的成员使用特权容器。
具体操作步骤如下:
1. 将普通用户添加到 `docker` 用户组中:
```
sudo usermod -aG docker your_username
```
其中,`your_username` 是您要添加到 `docker` 用户组中的用户名。
2. 编辑 Docker 配置文件 `/etc/docker/daemon.json`,配置容器运行时的默认参数:
```
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"runcmd": [
"/usr/sbin/sysctl -w kernel.perf_event_paranoid=-1"
],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"iptables": true,
"ipv6": true,
"userns-remap": "default",
"experimental": true,
"features": {
"buildkit": true
},
"group": "docker"
}
```
其中,`group` 参数设置为 `docker`,表示允许属于 `docker` 用户组的成员使用 Docker。
3. 重新启动 Docker 守护进程:
```
sudo systemctl daemon-reload
sudo systemctl restart docker
```
4. 使用普通用户身份启动特权容器:
```
docker run --privileged -it bcc-image
```
现在,普通用户已经可以使用特权容器了。需要注意的是,使用特权容器会增加安全风险,需要谨慎使用。