linux中docker 内存 进程
时间: 2025-06-21 11:29:23 浏览: 9
### Linux Docker 容器内存管理
在Linux环境下,Docker容器的内存管理通过内核的功能来实现。可以利用`docker run`命令中的参数设置容器的最大可用内存以及交换分区大小。例如:
```bash
$ docker run -m 512M --memory-swap=1G ...
```
上述命令表示给定容器分配最大512MB物理内存,并允许额外使用最多至1GB的swap空间[^3]。
对于已经运行着的容器,如果想要动态调整其资源配额,则可以通过Cgroups(Control Groups)机制间接达成目的;不过通常建议重启容器并重新指定启动选项作为更简便的方法。
当宿主机上的总RAM被耗尽时,操作系统会触发OOM killer(Out Of Memory Killer),它会选择一些进程终止掉以释放宝贵的内存资源。为了防止这种情况影响到重要的服务,在创建容器的时候还可以配置OOM score adjustment值,从而控制各个容器遭遇杀戮的概率高低。
### 进程控制
要查看正在运行于某个特定Docker容器内部的所有进程列表,可以从宿主机执行如下指令获取相关信息:
```bash
$ docker top s12
```
这里假设`s12`是要查询的目标容器名称/ID。此操作将会返回该容器里所有活动进程的标准UNIX `ps aux`样式的输出结果[^4]。
另外一种更为直观的方式是进入目标容器内部直接调用常用的系统工具如top、htop等来进行交互式观察。这一般涉及到先取得一个shell访问权限再进一步探索:
```bash
$ docker exec -it s12 bash
```
一旦进入了容器环境就可以按照常规方法监视CPU占用率、线程数量变化趋势等等细节情况了。
除了基本的状态监测外,有时候也需要主动干预某些失控的任务。这时便可以用到信号量发送功能,比如向PID等于7890的服务优雅地发出停止请求:
```bash
$ docker kill --signal=SIGTERM $(docker inspect --format='{{.State.Pid}}' s12)
```
当然也可以简化为只提供容器名字让Docker自行处理默认情况下对应的主进程结束事宜:
```bash
$ docker stop s12
```
阅读全文
相关推荐


















