docker资源管理
docker cpu管理
Docker提供了多种方式来管理容器的CPU使用情况,包括以下几种方法:
- CPU限制:使用
--cpus
参数可以限制容器使用的CPU核心数。例如,docker run --cpus 2
将限制容器使用2个CPU核心。 - CPU共享:使用
--cpu-shares
参数可以为容器分配CPU资源的相对份额。较高值的容器将获得更多的CPU时间。例如,docker run --cpu-shares 512
将为容器分配512个CPU份额。
创建容器时可以使用选项
--cpu-shares
数值(该数值要为1024的倍数,1024代表一份,当个容器占用cpu的份额由自身分配的份数除于所有容器占用cpu的份数,就为该容器所占用cpu资源的百分比)进行分配
- CPU集合:使用
--cpuset-cpus
参数可以将容器限制在特定的CPU核心或CPU集合上运行。例如,docker run --cpuset-cpus 0,1
将限制容器在CPU核心0和1上运行。 - CPU配额:使用
--cpu-quota
参数可以为容器设置CPU配额。例如,docker run --cpu-quota 50000
将为容器设置每秒钟最多可以使用 50000 微秒的 CPU 时间。 - CPU周期:使用
--cpu-period
参数可以为容器设置CPU周期。例如,docker run --cpu-period 100000
将为容器设置100,000微秒的CPU周期。
docker 内存管理
Docker有几种方式来管理容器的内存使用情况:
-
限制容器可以使用的内存量:可以使用
--memory
选项来限制容器可以使用的内存量。例如,可以使用--memory=1g
选项将容器的内存限制为1GB。 -
内存交换限制:可以使用
--memory-swap
选项来设置容器可以使用的交换空间的限制。默认情况下,Docker会将--memory-swap
设置为--memory
的两倍。(非必要) -
容器内存分配策略:Docker支持以下几种容器内存分配策略:
--memory-swappiness
选项:可以设置容器对交换空间的使用程度。默认情况下,Docker将此选项设置为60。--oom-kill-disable
选项:可以禁止Docker在内存不足时杀死容器。默认情况下,此选项是禁用的。--oom-score-adj
选项:可以设置容器的OOM分数调整值。较低的OOM分数意味着容器更有可能被杀死。默认情况下,此选项为0。
-
查看容器的内存使用情况:可以使用
docker stats
命令来查看容器的内存使用情况,包括使用的内存量、缓冲区和缓存量、交换空间使用情况等。
1、当网络模式使用container模式时,几个容器中的服务是否可以通过localhost或者127.0.0.1进行通信
container 网络模式
Container 网络模式是 Docker 中一种较为特别的网络的模式。在创建容器时通过参数 --net container:已运行的容器名称|ID 或者 --network container:已运行的容器名称|ID 指定;
处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用 localhost 高效快速通信。
docker network create --driver bridge --subnet=22.0.0.0/24 test-net
docker run --name testnginx -d -p 81:80 --net test-net nginx
docker run --name testtomcat -d --network container:testnginx tomcat
2、创建一个默认桥接的容器,将容器连接到自定义网络
docker network create --driver bridge my_network docker run -d --name nginx_container \
--network my_network \
-p 90:80 \
nginx
3、创建一个httpd容器
docker run -d --name httpd_container \
-p 100:80 \
httpd
使用物理机访问httpd服务
使用虚拟机访问httpd服务
进入容器查看httpd的日志
4、修改cfs公共参数中的cpu.cfs_quota_us改为20000,创建容器测试cpu用量
cd /sys/fs/cgroup/cpu/docker/
code cpu.cfs_quota_us
# 20000
# save
docker run -id --name c1 centos
docker exec -it c1 bash
vi cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done
chmod +x cpu.sh
./cpu.sh
top
5、构建一个docker容器,限制其可用最大内存为1024mb
docker run --name testc --memory 1024m -id centos
docker stats