大家对 Docker 都应该有了或多或少的意识了,置信大家都是从这两张图来粗旷的了解 Docker 及容器概念的
那咱们如何更轻松的了解容器 Container
呢?说白了
Container 就是一个过程
比方咱们 run
一个 mongo
的镜像 image
而后咱们通过上面命令列举出正在运行的容器 (以下两个命令等同)
# 旧命令docker ps# 新命令docker container ls
集体倡议应用新命令
如果你对上述等同命令有所纳闷,或者好奇动图中的命令主动补全是怎么实现的,以及为什么倡议应用新命令,请看 Docker 命令主动补全,在不相熟命令之前,倡议充分利用 TAB 键来查看每个命令的含意,而后结合实际应用场景,缓缓记忆,这样才积重难返
咱们 run 上面命令:
# top -- Display the running processes of a container (这是 TAB 补全给的命令提醒阐明)docker container top mongo
从上图中能够看到,PID 为 2292,command 为 mongod
。既然咱们说 container 是一个过程,那咱们就应该在 Host 中找失去,执行上面命令
ps aux | grep mongod
查看执行后果:
rgyb 49927 0.0 0.0 4277516 708 s000 S+ 4:06PM 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn mongod
对于 mongod 只有咱们刚刚执行的 grep mongod
的操作,并没有下面说的 container,这是为什么?
仔细的敌人可能曾经从动图中发现我是用 Mac 做的测试,Docker Platform 原生运行在 Linux 上(在 Linux 操作系统中就不会有上述问题,大家能够自行尝试)。我是用 Docker for Mac,其实应用的是在macOS上一个非凡的 xhyve VM中运行的小型(定制)Alpine Linux,所以如果想看到这个过程,咱们须要进入到 Mac 的这个 Docker VM
执行下述命令:
docker run -it --rm --privileged --pid=host justincormack/nsenter1
(这里暂不开展阐明,有趣味的能够看看这个 justincormack/nsenter1 image 到底做了什么,Docker for Windows 也能够用这种形式进入 Docker VM)
到这,Container 是个过程算是证实完了,然而老gong,你证实这个有什么用呢?
程序员都对过程有根本理解,证实 Container 是个过程,只不过是将一个“新”货色剥开看看实质,并挂靠到你相熟的内容上
过程就是它能够获取操作系统的哪些资源(网络/磁盘/文件等),当进行过程,也就会主动退出,开释相应资源。所以,接下来只有缓缓摸索,一个 Container 中应用了哪些资源,是如何获取资源的。理解了这些,也就缓缓理解了 Docker
大家能够通过上面两个命令理解 Container 的更多详情
docker container inspect mongo
查看Container 的详细信息(JSON 的数据模式)
Usage: docker container inspect [OPTIONS] CONTAINER [CONTAINER...]Display detailed information on one or more containersOptions: -f, --format string Format the output using the given Go template -s, --size Display total file sizes------------------------------docker container inspect mongo
细节内容十分多,能够简略的看一看(肯定有你一眼就能看明确的信息),暂不必深究
docker container stats mongo
查看资源是用状况(动静统计)
Usage: docker container stats [OPTIONS] [CONTAINER...]Display a live stream of container(s) resource usage statisticsOptions: -a, --all Show all containers (default shows just running) --format string Pretty-print images using a Go template --no-stream Disable streaming stats and only pull the first result --no-trunc Do not truncate output---------------------------- docker container stats mongo
总结
这里没有上来就和大家死背命令,当初不会,未来也不会。而是通过理论目标,联合命令补全自行查看的形式逐渐意识与理解。强烈建议大家装置命令补全,能够纵情应用 TAB,也能够在每个命令前面增加 --help
的形式随时查看应用形式
证实 Container 就是一个过程,这样贴近咱们已有常识后,学习门槛至多矮了半截吧。最初做个游戏吧,你记住了本文的多少个命令?
灵魂诘问
- 为什么资源动静统计 Mem LIMIT 是 1.941GB,这个是在哪里设置的?
日拱一兵 | 原创