您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何使用Docker客戶端管理容器,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
傳統上,在管理物理服務器或虛擬機時,我們只需要連接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
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用Docker客戶端管理容器”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。