自己动手写 Docker 系列 -- 5.5 实现容器停止
简介
在上篇中我们实现了通过 exec 命令,重新进入了后台运行中的容器,本篇将实现 stop 命令,将运行中的容器停止
源码说明
同时放到了 Gitee 和 Github 上,都可进行获取
本章节对应的版本标签是:5.5,防止后面代码过多,不好查看,可切换到标签版本进行查看
代码实现
实现该功能的主要思路如下:
1 首先根据容器名称,定位到其配置文件
2 读取配置文件,得到容器的 PID,发送 kill 信号,停止进程,这样容器运行也停止了
3 将相关的停止信息更新写入配置文件中进行保存
stop 命令新增
在 main 函数中新增 stop 命令:
main_command.go 新增相关的命令:
读取容器配置文件,停止并更新容器
我们根据容器名称,找到容器的配置文件的存放位置
读取配置文件后,我们能得到容器在宿主机上的 PID
更加 PID,我们就能发送 kill 命令,去停止容器
停止容器后,将配置文件中的容器状态改为停止,然后更新存储配置文件
具体的代码实现如下:
上面的代码中用到了两个函数,一个是根据容器名称得到容器的 PID,一个是根据容器名称得到容器的配置(根据这两个好像可以优化下,拿到了容器的配置,里面就有容器的 PID 了,读者感兴趣的话可以试试)
运行测试
我们测试如下:
启动一个后台运行的 top 命令容器
ps 查看状态:看到有一个预期的 running 的容器
查看是否有对应的宿主机进程,看到有一个对应的 top 进程
使用 stop 命令
ps 查看状态:看到已经停止了
查看宿主机是否有 top 进程,看到没有了
版权声明: 本文为 InfoQ 作者【萧】的原创文章。
原文链接:【http://xie.infoq.cn/article/db258c92b336143562c35e4a6】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论