大家对 <em>Docker</em> 都应该有了或多或少的认识了,相信大家都是从这两张图来粗旷的理解 <em>Docker</em> 及容器概念的 那我们如何更轻松的理解容器 Container 呢?说白了 Container 就是一个进程 比如我们 run 一个
2021-05-19 10:30:58
大家對 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,這個是在哪裡設定的?原創 | 日拱一兵
相關文章
大家对 <em>Docker</em> 都应该有了或多或少的认识了,相信大家都是从这两张图来粗旷的理解 <em>Docker</em> 及容器概念的 那我们如何更轻松的理解容器 Container 呢?说白了 Container 就是一个进程 比如我们 run 一个
2021-05-19 10:30:58
“我成绩不好,能学会编程吗?”“零基础可以学<em>java</em>吗?”“英语不好可以学好<em>Java</em>吗?”“……”一、我们需要弄清<em>Java</em>和英语的关系 英语是一门语言,就我们中国人来说,汉语是你的第一语种,是你必须要
2021-05-19 10:30:55
今年2021款<em>iPad</em> Pro 12.9的发布让人们关注到了一个全新的显示界面版——Mini LED。Mini LED被认定是结合LCD和OLED全部优点的“终极”面板。mini-LED背光灯珠的分布更细腻,所以就能更加精细地分区背光,缓解了
2021-05-19 10:30:47
消息称苹果最新款<em>iPad</em> Pro屏幕生产遇阻 发货时间再推迟至7月 据报道苹果公司正在努力应对新款高端<em>iPad</em> Pro的持续供应链限制。这款已经推迟了一个半月的苹果最贵平板的出货时间可能还会继续后延。
2021-05-19 10:30:43
“他们还没有用过<em>iPad</em>。事实上,我会限制孩子使用电子产品。” 我对于社交媒体是又爱又恨的,原因就是,我今天做的事情就是社交媒体强大的算法带给我的成就,也就是说,虽然我有一部分是实力,但也有很大程度是算
2021-05-19 10:30:32
拉瑞安工作室旗下经典RPG游戏《神界:原罪2》终极版现已登陆IOS端(<em>iPad</em>),没有微交易,并且包含了价值24.99美元(或与您所在区域等值)的锦礼袋DLC内容。<em>iPad</em>版不仅支持触控操作,同时还额外支持外接设备(游戏手
2021-05-19 10:30:27