Docker Container 就是个进程,多新鲜啊?

大家对 Docker 都应该有了或多或少的认识了相信大家都是从这两张图来粗旷的理解 Docker 及容器概念的

那我们如何更轻松的理解容器 ​​Container​​ 呢?dockers说白了

Container 就是一个进程

比如我们 ​​rdockerun​补全对话英语专项训练​ 一个 ​linux是什么操作系统mongo​​​ 的镜像 ​​image​


                                            Docker Container 就是个进程,多新鲜啊?

然后我们通过下面命令列举出正在运行的容器 (以下补全三视图两个命令系统运维工资一般多少等同)

#旧命令
dockerps
#新命令
dockercontainerls


                                            Docker Container 就是个进程,多新鲜啊?

个人建议使用新docker是干什么的命令

如果你对上述等同命令有所疑惑或者好奇动图中的命令自动补全是怎么实现的,以及为什么建议使用新命令,请看 ​​Docker 命令自系统运维工资一般多少动补全​​,在不熟悉命令之前,建议充分利用linux TAB 键来查看每个命令的含义,然后结合实际使用场景,慢慢记忆,这样才根深蒂固

我们docker是干什么的 run 下面命令:

#top--Displaytherunningprocessesofacontainer(这是TAB补全给的命令提示说明)
dockercontainertopmongo


                                            Docker Container 就是个进程,多新鲜啊?

从上图中可以看到,PID 为 2292,command 为 ​​mongod​​。既然我们说 container 是一个进程,那我们就应该在 Ho系统/运维st 中找得到,执行下面命令

psaux|grepmongod

查看执行系统运维工作内容结果:

rgyb499270.00.04277516708s000S+4:06PM0:00.00grep--color=auto--exclude-dir=.bzr--exclude-dir=CVS--exclude-dir=.git--exclude-dir=.hg--exclude-dir=.svnmongod

关于 mongod 只有我们刚刚执行的 ​grep mongod​​ 的操作,并没有上面说的 container,这是为什么?


                                            Docker Container 就是个进程,多新鲜啊?

细心的朋友可能已经从动图中发现我是用 Mac 做的测试,Docker Platform 原生运行在 Linux 上(docker常用命令在 Lilinuxnux 操作系统中就不会有上述问题,大家可以自行尝试)。我是用 Docker for Mac,其实使用的是在macOS上一个特殊的 xhyve VM中运行的小型(定制)Alpine Linux,所以如果想看到这个进程,我们linux常用命令需要进系统运维工作内容入到 Mac补全视图中所缺的图线 的这个 Docker VM

执行下述命令:

dockerrun-it--rm--privileged--pid=hostjustincormack/nsenter1

(这里暂linux是什么操作系统不展开说明,docker菜鸟教程有兴趣linux创建文件的可以看看这个 justdockerhubincormack/nsenter1 image 到底做了什么,Docker for Windows 也可以用这种方式进入 Docker VM)


                                            Docker Container 就是个进程,多新鲜啊?

到这,Containlinuxer 是个进程算是证明完了,但是老gong,你证明这个有什么用呢?

程序员都对进程有基本了解,证明 Container 是个进程,只不过是将linux重启命令一个“新”东西剥开看看本质,并挂靠到你熟悉的内容上

linux系统安装程就是它可以获linux取操作系统的哪些资源(网络/磁盘/文件等),当停止进程,也docker容器就会自动退出,释放相应资源。所以,接下来只要慢慢探索,一个 Container 中使用了哪些资源,是如何获取资源的。了解了这些,也就慢慢了解了 Docker

大家可以通过下dockers什么品牌面两个命令了解 Container 的更多详情

  • ​docke系统运维工资一般多少r container inspect mongo​​ 查看Containerlinux系统 的详细信息(JSON 的数据形式)
Usage:dockercontainerinspect[OPTIONS]CONTAINER[CONTAINER...]

Displaydetailedinformationononeormorecontainers

Options:
-f,--formatstringFormattheoutputusingthegivenGotemplate
-s,--sizeDisplaytotalfilesizes
------------------------------
dockercontainerinspectmongo


                                            Docker Container 就是个进程,多新鲜啊?

细节linux创建文件内容非常多,可以简单的看一看(一系统运维工程师面试问题及答案定有你一眼就能看明白的信息)系统运维工程师面试问题及答案docker容器暂不用深究

  • ​docker container stats mongo​​ 查看资源是用情况(动态统计)
Usage:dockercontainerstats[OPTIONS][CONTAINER...]

Displayalivestreamofcontainer(s)resourceusagestatistics

Options:
-a,--allShowallcontainers(defaultshowsjustrunning)
--formatstringPretty-printimagesusingaGotemplate
--no-streamDisablestreamingstatsandonlypullthefirstresult
--no-truncDonottruncateoutput
----------------------------
dockercontainerstatsmongo


                                            Docker Container 就是个进程,多新鲜啊?

总结

这里没有上来就和大家死背命令,现在不会,将来也不会。而是通过实际目的,结合命令补全自行查看的方式逐步认识与了解。强烈建议大家安补全对话英语装命令补全,可以尽情使用 TAB,也可以在每个命令后面添加​-docker安装部署-help​​ 的方式随时查看使用方式

证明 Container 就是一个进程,这样docker贴近我们已有知识后,学习门槛至少矮了半截吧。最后docker容器做个游戏吧,你记住了本文的多少个命令?

灵魂追问

  1. 为什么资源动态统计 Mem LIMIT 是 1.941linux系统安装GB,这个是在哪里设置的?


                                            Docker Container 就是个进程,多新鲜啊?