一、 背景介绍

        由于 Docker 自身的原因,在容器内执行诸如 free 、top等命令时,看到的却是宿主机的相关状态信息,给监控带来了困扰

        本文介绍通过在宿主机安装 lxcfs 组件,增强 Docker 容器的隔离性,执行 free 命令时真正显示 -m 参数所设置的内存值

二、 设置步骤

2.1   本文宿主机操作系统为 CentOS 7,首先安装 lxcfs 软件

# yum install lxcfs-2.0.5-3.el7.centos.x86_64.rpm
        lxcfs-2.0.5-3.el7.centos.x86_64.rpm 下载地址

2.2  启动 lxcfs

# systemctl start lxcfs

      或者直接执行启动命令

# lxcfs /var/lib/lxcfs &
2.3  配置容器启动参数

      -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw

      -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw

      -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw

      -v /var/lib/lxcfs/proc/stat:/proc/stat:rw

      -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw

      -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw

      只要容器启动时映射了宿主机的这些文件,即可修正 free、top等命令的错误显示

2.4  验证

docker run -it -m 300m  \
      -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \
      -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \
      -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \
      -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \
      -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \
      -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \
	  ubuntu:14.04 /bin/bash
      

=====

设置 lxcfs 开机自启动

# vim /lib/systemd/system/lxcfs.service
[Unit]
Description=FUSE filesystem for LXC
ConditionVirtualization=!container
Before=lxc.service
Documentation=man:lxcfs(1)

[Service]
ExecStart=/usr/bin/lxcfs /var/lib/lxcfs/
KillMode=process
Restart=on-failure
ExecStopPost=-/bin/fusermount -u /var/lib/lxcfs
Delegate=yes

[Install]
WantedBy=multi-user.target
# systemctl enable lxcfs
# systemctl start lxcfs



Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐