image-20240311142734775

Docker入门笔记(3)

容器资源管理

容器控制操作

查看容器中输出的日志信息

1
docker logs 容器名

image-20240314092915737

上面的打印操作还可以添加-f来持续打印日志信息

之前已经用过的重新进入容器

1
docker attatch 容器名/id

如果要回到主机上,需要ctrl + pctrl + q来退出,这时容器会保持运行,而使用ctrl + c会终止容器中正在运行的容器

我们还可以使用exec命令将指令传入终端并执行

1
docker exec -it 容器名 指令

image-20240314093156121

image-20240314093328698

我们之前试过使用stop来停止容器,但他是会等待容器处理完结束程序后才会停止,我们可以使用kill来强制停止容器

1
docker kill 容器名

如果想让容器暂时挂起,就可以使用pause

1
docker pause 容器名

恢复则使用unpause

1
docker unpause 容器名

容器物理资源管理

我们可以限制容器使用的如内存等物理资源上限

1
docker rum -m 内存上限 --memory-swap=内存和交换分区一共的内存限制 镜像名

默认内存和内存与交换分区无上限,默认都为-1;

我们把内存给小一点,再次试着启动刚才打开的Springboot程序

image-20240314095905958

可以看到,内存太小,直接寄了

我们还可以分配CPU资源,不过在Docker中是个相对的概念

1
2
docker run -c 1024 test1
docker run -c 512 test2

这里两个镜像在压力拉满的情况下,docker分配给他们的CPU资源比例是2:1;

注意这时分配的CPU资源是一个相对的概念,如果有一个容器闲置,那么另一个容器还是有可能拿到全部的CPU资源

Docker也为我们提供了直接指定容器使用的CPU核心的方法

1
docker run -it --cpuset-cpus=1 ubuntu

上面就只分了CPU的1号核心

如果要分配多颗核心,需要使用逗号隔开

1
docker run -it --cpuset-cpus=0,1,2 ubuntu

也可以限制数量

1
docker run -it --cpuset-cpus=1 ubuntu

不只是CPU和内存,磁盘IO也可以被管理

我们先测试一下容器内的读写速度

1
dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=direct

跑一下中途ctrl+c就行,不用测完

image-20240314100754376

可以看到当前的读写速度为8.4 MB/s,我们可以通过--device-read/write-bps--device-read/write-iops参数对其进行限制。

  • bps:每秒读写的数据量。
  • iops:每秒IO的次数。

这里限制bps

1
docker run -it --device-write-bps=/dev/sda:3MB ubuntu

再次测试读写速度,发现读写速度就只有3mb/s左右了

容器监控

我们可以对容器的实时运行状态进行监控

1
docker stats

image-20240314102415807

除了笼统的使用stats来监控,还可以使用top来查看容器中的进程

1
docker top 容器id/名称

image-20240314102647978


单机容器编排

我之前部署问卷项目到docker的时候,不是因为数据库那些没有一起传上去所以跑不通吗,这下有办法了。

Docker-Compose可以对我们的容器进行编排,让多个容器按照我们自己的编排进行部署

Docker-Compose官方文档

这里弃了,之后把短链接和问卷项目整合完善了再搞吧


参考视频:Docker 容器技术 已完结(2022 最新版)4K蓝光画质+杜比音效 从内卷到开摆

视频教程文档:Docker容器技术