Docker笔记(三)
Docker入门笔记(3)
容器资源管理
容器控制操作
查看容器中输出的日志信息
1 | docker logs 容器名 |
上面的打印操作还可以添加-f
来持续打印日志信息
之前已经用过的重新进入容器
1 | docker attatch 容器名/id |
如果要回到主机上,需要ctrl + p
再ctrl + q
来退出,这时容器会保持运行,而使用ctrl + c
会终止容器中正在运行的容器
我们还可以使用exec命令将指令传入终端并执行
1 | docker exec -it 容器名 指令 |
我们之前试过使用stop
来停止容器,但他是会等待容器处理完结束程序后才会停止,我们可以使用kill
来强制停止容器
1 | docker kill 容器名 |
如果想让容器暂时挂起,就可以使用pause
1 | docker pause 容器名 |
恢复则使用unpause
1 | docker unpause 容器名 |
容器物理资源管理
我们可以限制容器使用的如内存等物理资源上限
1 | docker rum -m 内存上限 --memory-swap=内存和交换分区一共的内存限制 镜像名 |
默认内存和内存与交换分区无上限,默认都为-1;
我们把内存给小一点,再次试着启动刚才打开的Springboot程序
可以看到,内存太小,直接寄了
我们还可以分配CPU资源,不过在Docker中是个相对的概念
1 | docker run -c 1024 test1 |
这里两个镜像在压力拉满的情况下,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就行,不用测完
可以看到当前的读写速度为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 |
除了笼统的使用stats来监控,还可以使用top
来查看容器中的进程
1 | docker top 容器id/名称 |
单机容器编排
我之前部署问卷项目到docker的时候,不是因为数据库那些没有一起传上去所以跑不通吗,这下有办法了。
Docker-Compose可以对我们的容器进行编排,让多个容器按照我们自己的编排进行部署
这里弃了,之后把短链接和问卷项目整合完善了再搞吧
参考视频:Docker 容器技术 已完结(2022 最新版)4K蓝光画质+杜比音效 从内卷到开摆
视频教程文档:Docker容器技术