1、如何查看docker run 的相关命令?
docker run --help | grep rm
--rm 参数: Automatically remove the container when it exists
作用:当容器命令运行结束后,自动删除容器,自动释放资源
应用场景:在某些环境下,可能需要大量的新建docker实例,然后仅仅运行几秒钟或几分钟,然后就彻底删除。如运行单元测试或测试弹性云计算。
例如:阿里云,要模拟双11的压力,需要快速创建1万docker实例,每个docker容器实例中都运行ab命令,拼命访问tmall.com首页,运行1个小时,1小时候自动删除。
# 运行5秒钟之后,自动给删除
dockere run -it --rm --name mk centos sleep 5
2、docker容器资源配额控制之内存
docker提供参数-m,--memory =“限制容器的内存使用量”
例1:要限制docker的运行内存是128M
docker run -it -m 128m centos
# 然后进行查看
cat /sys/fs/cgroup/memory/memory.limit_in_bytes
例2:创建一个docker,只使用2个cpu核心,只能使用128M内存
docker run -it --cpuset-cpu 0,1 -m 128m centos
3、docker 数据映射
语法:
docker -itd -v /src/dest centos bash
-v 用来指定挂载目录,冒号: 前面的/src为物理机本地目录,后面的/dst 为容器的目录。
例1:把物理机上的/var/www/html 映射到docker实例的/var/www/html。
好处:这样当docker坏了,数据还在物理机上,再使用apache镜像启动一个docker实例就可以了,数据不丢失。
docker run -it --name web1 -v /var/www/html:/var/www/html centos bash
然后将相应的内容存储到html下,进行测试一下:
>echo aaa > /var/www/html/index.html
>cat !$
cat /var/www/html/index.html
aaa
docker容器资源配额控制之IO控制
为什么阿里云平台上普通云盘的IO为:1000 IOPS ,为什么这么小?
原因是:一台存储给2000台云主机使用,需要控制一i西安,防止某台云主机吃光你的磁盘I/O资源
情景:防止某个Docker容器吃光你的磁盘I/O资源
例1:限制容器实例对硬盘的最高写入速度设定为1MB/s.
docker run -it -v /var/www/html:/var/www/html --device /dev/sda:/dev/sda --device-write-bps /dev/sda:1mb centos /bin/bash
time dd if=/dev/sda of=/var/www/html/test.out bs=1M count=50 oflag-direct,nonblock
dd参数:
- direct:读写数据采用直接IO方式,不走缓存。直接从内存写硬盘上。
- nonblock:读写数据采用非阻塞IO方式,有限写dd命令的数据
本文章是学习于docker视频,意在帮助大家更好的学习,如有问题,欢迎大家留言!!