Docker的privileged的作用

本文介绍了Docker容器如何通过privileged参数获取宿主机的root权限。未设置privileged时,容器内的root权限受限,无法执行如mount等操作。而启用privileged参数后,容器内的root可以访问更多设备并执行挂载操作,实现与宿主机相似的权限。这展示了privileged参数在特定场景下的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker 应用容器 获取宿主机root权限(特殊权限)

docker run -d --name="centos7" --privileged=true centos:7

privileged参数

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

未设置privileged启动的容器:

[root@localhost ~]# docker run -t -i centos:latest bash
[root@ed8fee643129 /]# lsblk 
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0   80G  0 disk 
|-vda1 252:1    0    1G  0 part 
`-vda2 252:2    0   79G  0 part 
vdb    252:16   0  200G  0 disk 
|-vdb1 252:17   0   50G  0 part 
|-vdb2 252:18   0   50G  0 part 
`-vdb3 252:19   0  100G  0 part 
[root@ed8fee643129 /]# mount  /dev/vdb3  /mnt/
mount: permission denied

设置privileged启动的容器:

[root@docker ~]# docker run -t -i  --privileged  centos:latest bash
[root@f83ce3877aa1 /]# 
[root@f83ce3877aa1 /]# 
[root@f83ce3877aa1 /]# mount  /dev/vdb3  /mnt/
[root@f83ce3877aa1 /]# df -h
Filesystem               Size  Used Avail Use% Mounted on
overlay                   77G   25G   52G  33% /
tmpfs                     64M     0   64M   0% /dev
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   77G   25G   52G  33% /etc/hosts
shm                       64M     0   64M   0% /dev/shm
/dev/vdb3                100G   33M  100G   1% /mnt
[root@f83ce3877aa1 /]# 
### Docker Compose 中 `privileged` 参数的使用说明 在 Docker Compose 文件中,`privileged` 是一个布尔类型的参数,用于授予容器更高的权限。当设置为 `true` 时,它允许容器访问主机的操作系统功能,这些功能通常被限制或隔离。这在运行某些特定的应用程序或调试工具时非常有用。 以下是关于 `privileged` 参数的具体配置和示例: #### 配置方式 在 Docker Compose 文件中,可以通过服务定义中的 `privileged` 字段启用此选项。其基本结构如下: ```yaml services: service_name: image: image_name privileged: true ``` 这里的 `privileged: true` 将使容器以特权模式运行[^1]。 #### 示例 以下是一个完整的 Docker Compose 文件示例,展示了如何使用 `privileged` 参数: ```yaml version: '3' services: my_service: image: ubuntu:latest privileged: true command: ["bash", "-c", "echo Hello Privileged Mode"] ``` 在这个例子中,`my_service` 容器将以特权模式启动,并执行简单的命令打印消息到控制台[^4]。 #### 注意事项 虽然 `privileged` 提供了更多的灵活性,但它也带来了潜在的安全风险。因为容器能够绕过许多安全机制并直接操作宿主机资源。因此,在生产环境中应谨慎使用这一选项[^5]。 #### Linux 上安装 Docker Compose 的方法补充 如果尚未安装 Docker Compose,可以根据以下步骤完成安装过程(适用于 Linux 系统)。通过 GitHub 发布页面获取最新版本二进制文件并赋予可执行权限即可完成部署工作[^2]: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version ``` 上述脚本会自动检测最新的稳定版进行下载与安装验证[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值