Docker容器内存限制的方法

1.使用Docker自带的-m操作进行内存限制时可能会由于内核限制所以出现以下提示

Your kernel does not support swap limit capabilities.memory limit without swap

必须通过修改grub文件/etc/default/grub 添加:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

之后更新grub并重启可以解决

$ sudo update-grub
$ sudo reboot

2.使用docker -m操作会使内存被限制为输入大小的两倍

$ sudo docker run -it --name test -m 100m ubuntu /bin/bash

此时内存被限制为200m

若想要限制为100m必须执行

$ sudo docker run -it --name test -m 100m --memory-swap=100m ubuntu /bin/bash

此时内存与swap都被限制为100m

3.内存压测工具stress

$ sudo apt-get install stress
$ sudo stress --vm 1 --vm-bytes 100M --vm-hang 0

若运行后现实在几秒内被杀死说明内存被限制为100M

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker 限制容器对内存的使用详解

    一个 docker host 上会运行若干容器,每个容器都需要 CPU.内存和 IO 资源.对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU.内存资源给每个虚拟机.对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 host 的性能. 内存限额 与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap. Docker 通过下面两组参数来控制容器内存的使用量. 1. -m或--memory:设置内存的使用限额,例如 100M,

  • Docker容器内存限制的方法

    1.使用Docker自带的-m操作进行内存限制时可能会由于内核限制所以出现以下提示 Your kernel does not support swap limit capabilities.memory limit without swap 必须通过修改grub文件/etc/default/grub 添加: GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" 之后更新grub并重启可以解决 $ sudo update-grub

  • 在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法

    介绍 Docker Swarm是用于部署Docker主机集群的Docker本地解决方案.您可以使用它来快速部署在本地计算机或受支持的云平台上运行的Docker主机集群. 在Docker 1.12之前,设置和部署Docker主机集群需要使用外部键值存储(如etcd或Consul)来进行服务发现.但是,使用Docker 1.12,不再需要外部发现服务,因为Docker提供了一个内置的键值存储,可以开箱即用. 在本教程中,您将了解如何使用Docker 1.12上的Swarm功能部署一组Docker机器

  • Docker 容器内存监控原理及应用

    Docker 容器内存监控 linux内存监控 要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念. 使用free命令可以查看当前内存使用情况. [root@localhost ~]$ free total used free shared buffers cached Mem: 264420684 213853512 50567172 71822688 2095364 175733516 -/+ buffers/cache: 36024632 228396052 Sw

  • 修改已有docker容器中的内容方法

    一.docker ps    列出容器 二.docker cp   拷贝文件至容器 注:docker中宿主机与容器(container)互相拷贝传递文件的方法 1.从容器拷贝文件到宿主机 docker cp mycontainer:/opt/testnew/file.txt /opt/test/ 2.从宿主机拷贝文件到容器 docker cp /opt/test/file.txt mycontainer:/opt/testnew/ 需要注意的是,不管容器有没有启动,拷贝命令都会生效. 当结束后,

  • 查看Docker容器的信息的方法实现

    目录 创建tomcat容器 第一种:进入容器内部获取信息 第二种:执行docker exec命令 第三种:使用docker inspect命令 对于运行在Docker环境的容器,有时我们想查询它们的一些基本信息,例如环境变量.hostname.ip地址等,接下来我们以一个tomcat容器为例,看看有哪些方式来取得这些信息: 创建tomcat容器 在docker环境下执行如下命令,即可创建一个名为tomcat001的tomcat容器: docker run --name tomcat001 -id

  • Docker容器自启动的实现方法

    容器自启动 Docker提供了restart policy机制,可以在容器退出或者Docker重启时控制容器能够自启动.这种Restart policy可以保证相关容器按照正确顺序启动.虽然也可以通过进程监控的方式(如systemd)来完成这种动作,但Docker还是建议尽量避免使用进程监控的方式来 "自启动" 容器. Docker的 Restart policy与dockerd命令的--live-restore启动标志还有区别:--live-restore标志可以在Docker升级的

  • 利用Volume在主机和Docker容器文件传输的方法

    之前写过一篇关于Docker容器和本机之间的文件传输.的文章,但是此方法相对比较繁琐一些,在查看了官方关于数据管理的文档之后发现利用volume来实现主机和容器的文件传输效率更高一点,其实也就是将本地的目录进行挂载到容器上,官方一共有三种方法:Manage data in Docker, 这里只介绍使用volume的操作:Use volumes 1.使用Volume在主机和容器之间传输文件. 在官方文档中可以看到使用如下命令即可创建一个volume: Create a volume: $ doc

  • Docker容器应用日志查看方法

    docker attach命令 docker attach [options] 容器会连接到正在运行的容器,然后将容器的标准输入.输出和错误流信息附在本地打印出来.命令中options的取值有三种:--detach-keys,--no-stdin,--sig-proxy. 该命令只是进入容器终端,不会启动新的进程.所以当你同时使用多个窗口进入该容器,所有的窗口都会同步显示.如果一个窗口阻塞,那么其他窗口也就无法再进行操作. 使用ctrl+c可以直接断开连接,但是这样会导致容器退出,而且还stop

  • 生产环境中安全运行Docker容器

    在生产环境中,强化Docker容器的一种方法就是使它们不可变,也就是只读.安全地运行容器的其他方法还包括最小化受攻击面和应用Linux安全过程,标准Linux安全过程和针对容器环境的特定过程都要应用. 在启动容器时传入--read-only标记就可以 在只读模式下运行 它.这可以防止任何进程写入文件系统.任何试图写入的动作都会导致错误. 运行这种不可变的基础设施 也与其他软件部署流水线的最佳实践相吻合. 尽管不可变性可以阻止任何恶意脚本的执行,可以禁止通过在容器里运行的其他软件暴露出来的漏洞而引

  • 详解Docker容器可视化监控中心搭建

    概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应用的容器的时序信息并可视化分析与展示! 动手了,动手了... 准备镜像 adviser:负责收集容器的随时间变化的数据 influxdb:负责存储时序数据 grafana:负责分析和展示时序数据 部署Influxdb服务 可以将

随机推荐