大家对 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 containers
Options:
-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 statistics
Options:
-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,这个是在哪里设置的?
日拱一兵 | 原创