使用Docker客戶端管理容器:這些命令必須知道
【IT168 編譯】有時候,容器管理對於不熟悉這種技術的IT人員來說可能有點“可怕”。筆者希望透過這篇文章向大家解釋我們能夠如何管理和執行一些涉及容器管理的任務,使這個主題更清晰。
傳統上,在管理物理伺服器或虛擬機器時,我們只需要連線RDP(執行Windows時)或SSH(執行Linux時)來訪問控制檯,然後從那裡執行任務。然而,容器被設計成是準備好可以用於生產的。從理論上講,我們不應該像以前的IT人員樣每天管理它們。但是,理解如何執行此類故障排除任務以及理解技術也是很重要的。
執行容器
IT人員在建立容器時可能犯的第一個錯誤是忘記映像和容器之間的關係。兩者有一種關係是,一個映像允許建立N個容器。請記住,映像是隻讀的,而當我們建立容器時,有一個薄的讀寫層,它允許我們將資料寫入容器,並且該資料將在容器生命週期中持久存在。
另一個重要的要點是,容器被設計為執行單個應用程式,如果該應用程式被終止,我們可以假設容器也將被停止。
為什麼這麼說?讓我們舉一個簡單的例子:我們希望立即執行 docker run alpine 以及容器退出,所以我們使用 -it ,這迫使它進行互動並使用當前終端。因為我想讓這個會話在後臺執行,所以使用鍵盤按鍵 Ctrl + p ,然後 Ctrl + q ,這樣重複四次,如下圖所示。
挑戰在於:如果你不指定容器的名稱,那麼Docker基於自身的演算法將為你建立一個名字,但如果我們試圖複製一個檔案到一個特定的容器中,儘管它們共享相同的映像和有相同的應用程式,我們仍需要能夠識別容器。因為稍後很可能我們將不記得那個名稱或容器ID資訊。
如果我們將一個檔案複製到第一個容器(例如cranky_pike),那麼只有這個容器會有該檔案,假設你不記得容器名稱或ID,這種情況下最好的解決方案是習慣性地使用開關(switch) --name<name> 以對相應的容器貼標籤,這些開關可以在建立容器使用。
由於我們處於當前場景中,如果我們需要返回任何給定容器的shell,我們可以利用 docker container attach <container-name> 命令。
注意:你可以使用容器名稱或任何字串作為容器的唯一標識。我們不需要輸入整個容器ID,在這種情況下,我可以只使用字母“f”,因為這個容器是唯一一個以“f”開頭的。
我當前的容器列表是空的,為什麼?
Docker客戶端命令 docker container list 只列出活動的容器。要獲得所有容器的列表,只需在同一個Docker客戶端命令的末尾新增開關 --all (如下圖所示)。
現在如果我想回到一個特定的容器,去檢查一些東西或抓取一個檔案,我該怎麼做?第一件事是啟動容器,然後返回會話。美妙之處在於,用於建立的命令也可以用於啟動容器(這是有意義的),因此不需要傳遞額外的引數。使用以下Docker客戶端命令,我們就能夠啟動任何已停止的容器。
docker container start <container-name-or-ID> docker container attach <container-name-or-ID>
有辦法自動清理未使用的容器嗎?
沒有。如果我們在建立容器時使用開關 --rm ,我們就在容器上設定了一個標記,一旦容器退出,它就會被移除。使用此選項時需要非常小心。
docker run -it --name <container-name> --hostname <container-name> --rm alpine
如果希望透過一行程式碼刪除所有容器,下面就是了(前兩行和最後一行只是為了顯示建立一行的邏輯)。請記住,我們正在刪除所有容器,所以使用它的風險由您自己承擔。
docker container list docker container list -aq docker container rm $(docker container list -aq) -f docker container list
-name開關有幫助,但是VM內部的名稱沒有定義
下面是關於如何解決這個問題的方法。使用--name引數將定義給定容器打的標籤。如果我們想在容器中配置名稱,我們需要一個額外的引數(--hostname)。下面突出顯示了用於容器的語法示例。我們連線到給定容器的外殼,並檢查Linux容器中使用的名稱。
docker run -it --hostname container002 --name container002 alpine
在容器上執行命令
有時候在管理容器時,在容器上執行命令會更容易,從而節省在其他地方進行故障排除的時間。我們可以使用 docker container exec 命令在任何給定容器上觸發特定的命令。
為了便於說明,前兩個命令(hostname和ipconfig)在主機上執行。為了直接從容器中獲取資訊,我們可以使用以下命令:
docker container exec <container-name> <command>
連線到控制檯(Linux和Windows)
在使用Windows容器(Windows作業系統)時,我們可以執行cmd,這會給我們帶來容器的命令提示。下面的Docker客戶端命令提供了標籤為webserver的容器控制檯。
docker container exec -it webserver cmd
如果你想使用Linux,我們只需要更改命令指令。以下命令可用於Linux容器:
docker container exec -it <container-name> /bin/sh
如果我們在執行Docker命令時使用PowerShell,首先會注意的是CMD的黑色背景。下面影像上執行的所有其他命令都在容器級別執行。如果你不確定,機器的名稱也是一個很好的指示,還可以使用tasklist檢索程式的數量。
管理容器:有待深入
讀過這篇文章後,是否意味著我們對容器管理瞭如指掌了呢?當然不是!我們才剛剛開始!如果你想繼續探索和嘗試新事物,可以試試這兩個Docker客戶端命令:
docker container --help docker container run—help
現在你正慢慢成為管理容器方面的專家。
原文作者:Anderson Patricio
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2199802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 客戶管理必須要用CRM系統嗎?
- 遊戲出海越南前,這些事情你必須知道遊戲
- 關於Linux作業系統,這些你必須知道!Linux作業系統
- 關於JVM,你必須知道的這些知識點JVM
- Linux系統擁有哪些特性?這些你必須知道!Linux
- 理解大型分散式網站你必須知道這些概念分散式網站
- 命令列客戶端MySQL如何使用命令列客戶端MySql
- Python如何區分不同的語句塊?這些必須知道!Python
- 想要學習Python課程,這些問題你必須知道!Python
- CSS你可以不寫,但這些規範必須要知道!CSS
- 如何玩轉Android物聯網開發,這些必須知道Android
- 邦芒面試:想面試成功,這些事你必須知道面試
- 常用的 Docker 容器管理命令Docker
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- 作為程式設計師,這些實用工具你必須要知道!程式設計師
- ZooKeeper客戶端CRUD命令客戶端
- redis客戶端管理Redis客戶端
- 學習Python,這些你必須搞懂!Python
- Python 這10個字典操作你必須知道Python
- Linux下必須知道的網路命令都有哪些?Linux
- 工作效率太低?這個目標管理神器工具你必須要知道
- Dockly:從終端管理 Docker 容器Docker
- 這幾個python常用的庫你必須知道!Python
- 8 個基本的 Docker 容器管理命令Docker
- Docker v2ray 客戶端Docker客戶端
- 關於CRM系統中的客戶概念,您需要知道這些
- 嵌入式開發中Docker客戶端常用命令分享Docker客戶端
- SQLite 命令列客戶端 sqlite3 使用指南SQLite命令列客戶端
- Clickhouse-客戶端查詢命令客戶端
- ElasticSearch-命令列客戶端操作Elasticsearch命令列客戶端
- 看視訊必備:YouTube客戶端客戶端
- 使用 github 做程式碼管理,知道這些就夠了Github
- 你必須知道的 SmartSql !SQL
- 這10款好用的Windows軟體,你必須知道!Windows
- FTP 客戶端使用教程FTP客戶端
- redis:常用客戶端命令(redis-cli)Redis客戶端
- zookeeper在Linux客戶端操作命令大全Linux客戶端
- Irssi:命令列下的IRC客戶端命令列客戶端