CentOS作为Docker主机会导致与任何其他主机操作系统不同的容器行为

CentOS作为Docker主机会导致与任何其他主机操作系统不同的容器行为,docker,centos,containers,linux-capabilities,Docker,Centos,Containers,Linux Capabilities,我在不同的主机上与Docker合作:RHEL7、SELS12和CentOS7, 我发现在CentOS7上作为Docker主机运行的容器与在SLES12或RHEL7上作为Docker主机运行的容器有不同的行为 不同的行为与Docker容器中的常见问题有关: 在CentOS7作为Docker主机的容器中: 我有权解析路径中的符号:/proc/1 命令:ls-la/proc/1 容器的启动命令: docker run -it --name=nessi_centos_test centos:late

我在不同的主机上与Docker合作:RHEL7、SELS12和CentOS7, 我发现在CentOS7上作为Docker主机运行的容器与在SLES12或RHEL7上作为Docker主机运行的容器有不同的行为

不同的行为与Docker容器中的常见问题有关:

在CentOS7作为Docker主机的容器中: 我有权解析路径中的符号:/proc/1
命令:
ls-la/proc/1

容器的启动命令:

docker run -it --name=nessi_centos_test centos:latest bash
但在SLES12或RHEL7作为Docker主机的容器中: 我使用相同的命令获得被拒绝的权限,您可以在上面的链接中看到。
命令:
ls-la/proc/1

其他信息: 默认情况下,依赖于容器的Linux内核功能受限

其中一个功能是:CAP\u SYS\u PTARCE
默认情况下,此功能存在于任何Linux主机中:

Linux机器中的示例:

但在所有容器中,默认情况下都会丢失它(除非您使用--cap add=sys\u ptrace启动容器)

容器中的示例: 您可以在这里看到,容器具有一组受限的功能,其中不包括sys_ptrace功能。

因此,如果我在RHEL或SLES中以--cap add=sys_ptrace作为Docker主机启动容器,我将获得与CentOS 7中作为Docker主机相同的行为。

例子: Docker主机:RHEL7
Docker图像:centos:最新(与以前相同)
Strat命令:docker run-it--name=nessi\u centos\u test5--cap add=sys\u ptrace centos:latest bash

正如您在这里看到的,为了获得与CentOS 7相同的行为,我需要使用额外的sys_ptrace功能启动容器。

技术资料:
  • CentOS 7的不同行为:在容器中运行命令:
    ls-la/proc/1

    结果:无错误
  • 其他主机(RHEL7和SLES12)运行命令的常规行为 容器中:
    ls-la/proc/1

    结果:
  • ls:无法读取符号链接/proc/1/cwd:权限被拒绝
    ls:无法读取符号链接/proc/1/root:权限被拒绝
    ls:无法读取符号链接/proc/1/exe:权限被拒绝

  • 不同的CentOS 7行为重现于:
  • [root@localhost桌面]#uname-a
    Linux localhost.localdomain 3.10.0-327.22.2.el7.x86_64#1 SMP周四6月23日17:05:11 UTC 2016 x86_64 x86_64 GNU/Linux

    [root@localhost桌面]#码头工人信息
    集装箱:1个
    正在运行:0
    暂停:0
    停止:1
    图片:1
    服务器版本:1.11.2
    存储驱动程序:devicemapper
    池名:docker-253:0-136686025-Pool
    池块大小:65.54 kB
    基本设备大小:10.74 GB
    备份文件系统:xfs
    数据文件:/dev/loop0
    元数据文件:/dev/loop1
    使用的数据空间:324.3 MB
    数据空间总量:107.4 GB
    可用数据空间:35.43 GB
    使用的元数据空间:847.9KB
    元数据空间总量:2.147 GB
    可用元数据空间:2.147 GB
    支持Udev同步:正确
    已启用延迟删除:false
    已启用延迟删除:false
    延迟删除的设备计数:0
    数据循环文件:/var/lib/docker/deviceapper/deviceapper/Data
    警告:强烈反对在生产中使用环回设备
    使用
    --storage opt dm.thinpooldev
    或使用
    --storage opt
    dm.no\u warn\u on\u loop\u devices=true
    来抑制此警告。
    元数据循环文件:/var/lib/docker/devicemapper/devicemapper/Metadata
    库版本:1.02.107-RHEL7(2016-06-09)
    日志驱动程序:json文件
    Cgroup驱动程序:cgroupfs
    插件:
    音量:本地
    网络:空主机网桥
    内核版本:3.10.0-327.22.2.el7.x86_64
    操作系统:CentOS Linux 7(核心)
    OSType:linux
    体系结构:x86_64
    CPU:1
    总内存:993.3 MiB
    名称:localhost.localdomain
    ID:BPVJ:YDPR:4VUO:WNBN:DVZH:7MEH:TPMP:Y3MP:GMN7:UT36:LQ74:GJ4N
    Docker根目录:/var/lib/Docker
    调试模式(客户端):false
    调试模式(服务器):false
    注册表:
    警告:网桥nf呼叫iptables已禁用
    警告:桥接-nf-call-ip6tables已禁用


    码头工人图片:
    centos:最新版本
    ubuntu:14.04

    还测试了:
    Docker守护程序版本:1.10.2


  • 其他主机的常规行为(RHEL7和SLES12)

    RHEL7作为Docker主机:

    [root@localhost~]#取消-a
    Linux localhost.localdomain 3.10.0-123.el7.x86_64#1 SMP周一5月5日11:16:57美国东部夏令时2014年x86_64 x86_64 x86_64 GNU/Linux

    [root@localhost~]#码头工人信息
    集装箱:14个
    跑步:6
    暂停:0
    停止:8
    图片:22
    服务器版本:1.11.2
    存储驱动程序:devicemapper
    池名:docker-253:0-67168288-Pool
    池块大小:65.54 kB
    基本设备大小:10.74 GB
    备份文件系统:xfs
    数据文件:/dev/loop0
    元数据文件:/dev/loop1
    使用的数据空间:9.66 GB
    数据空间总量:107.4 GB
    可用数据空间:16.27 GB
    使用的元数据空间:7.68 MB
    元数据空间总量:2.147 GB
    可用元数据空间:2.14 GB
    支持Udev同步:正确
    已启用延迟删除:false
    已启用延迟删除:false
    延迟删除的设备计数:0
    数据循环文件:/var/lib/docker/deviceapper/deviceapper/Data
    警告:强烈反对在生产中使用环回设备
    使用
    --storage opt dm.thinpooldev
    或使用
    --storage opt dm.no\u warn\u on\u loop\u devices=true
    来抑制此警告。
    元数据循环文件: