Docker(二) -- 容器Container

一:簡要概述

上一節Docker鏡像中詳細講解了相關Docker安裝以及Docker基礎鏡像的知識,但是Docker的核心還是容器。它是Docker封裝管理應用程序的集裝箱,可以理解爲一個箱子。本節的要點就是介紹有關容器Create、Start、Run、Pause、Delete、Stop、Exec等知識

二:容器狀態

在這裏插入圖片描述
本圖片複製於有明大佬掘金Docker小冊,感興趣的朋友推薦購買這個小冊,理論知識還是比較豐富

可以看到圖中標註的幾個容器狀態,這張圖片繪製的詳細讓我比較推崇,不僅僅繪製出狀態變化路徑,並且給出了詳細的Docker指令,狀態釋義如下:

  • Createdocker pull拉取鏡像之後通過docker create [name] / [ID] 可以製作對應容器,此時控制檯會輸出一個32位的ID,這和鏡像ID意義一致,唯一標識
  • Running:通過docker create製作好的容器執行docker start [name] / [ID]即可運行容器,這時容器內部應用會啓動,容器狀態變更爲Running
  • Stop:Linux中停止進程你會Kill進程,Docker中提供了docker stop指令用於停止容器,自然容器內應用隨之而停,狀態變更爲Stop
  • Delete:雖然Doker的容器佔用內存不多,但是當長期不使用鏡像存在列表也難管理。通過命令dcoker rm [name] / [ID]
  • Pause:只想停止容器內應用而不停止容器怎麼辦?Docker提供指令docker pause [name] / [ID]

三:命令詳解

前面一小節通過介紹Docker容器幾個狀態的變更提及些許Docker容器較爲重要的指令,但是某些細節地方還是不夠完善,且遺漏了某些常用命令。本節重點就是查漏補缺,並詳細闡述前面涉及到的指令

3.1 容器創建

鏡像 – 容器纔算是Docker使用邁出堅實的一步,Docker的容器通過鏡像製作而成,形成一個封閉運行環境。命令格式如下:分配的32位唯一ID與鏡像ID意義一致

docker create [鏡像名稱]  / [鏡像ID]

在這裏插入圖片描述

3.2 容器查看

拉取的鏡像可以通過docker images查看,製作好的容器怎麼查看?難道就一直使用控制檯輸出的32ID?顯然不可能,Docker提供以下格式命令管理查看容器:

// 注意這個命令只能查看正在運行的容器
// 查看所有容器命令後添加參數 -a 或者是 --all
docker ps

在這裏插入圖片描述

  • CONTAINER ID:容器唯一標識ID
  • IMAGE:創建容器依賴的鏡像
  • COMMAND:後續詳解,啓動容器的命令
  • CREATED:從創建到目前查詢時長
  • STATUS:容器狀態,Running狀態容器會提示開始運行到目前查詢時長
  • PORTS:佔用端口
  • NAMES:容器名稱
3.3 容器命名

鏡像的操作可以根據ID亦或是名稱進行,容器的操作亦是如此。前面已經很多次提到了容器的名稱,但是我們發現docker create創建出來的容器實例並沒有名稱,這時候就需要進行指定,通過參數–name,示例如下:

// 創建容器命名
docker create --name redis-zsl redis:latest

在這裏插入圖片描述

3.4 容器啓動

通過docker create製作好容器實例後容器處於Create狀態,並沒有正常運行。此時可以通過命令docker start [name] / [ID] 啓動容器,是的容器及容器內應用啓動運行:

// 啓動容器
docker start redis-zsl

在這裏插入圖片描述
可能很多人就要說,容器的啓動好麻煩,create + start才能實現。彆着急,給你一個等式,run = create + start

// 根據鏡像創建、啓動容器
// -d 代表後臺運行
docker run --name redis-run -d redis:latest

在這裏插入圖片描述
比較牛逼的是如果本地沒有這個鏡像,那麼此時Docker會去鏡像倉庫下載該鏡像並進行容器製作與啓動
在這裏插入圖片描述

3.5 容器刪除

容器不使用總不能一直佔用資源吧,況且也會造成不好管理的問題。所以容器的刪除實現提供命令docker rm,這裏強調的是運行狀態(Running)的容器不能被刪除,所以需要先stop容器然後再刪除,當然也可以使用 -f 參數強制刪除,不過不推薦使用
在這裏插入圖片描述

3.6 容器導出 / 加載

上一篇文章鏡像中提到了將鏡像打包成tar包保存到本地後,遷移到其它Docker環境加載。將修改的容器commit成鏡像,再通過鏡像打包傳遞對於我而言是麻煩事兒。這裏將一步到位,直接遷移打包修改的容器。需要注意一點,導出的容器在導入後是一個鏡像,不是直接導入成爲容器

// 保存導出容器
docker export -o 容器導出保存路徑 導出容器名稱

// 導入容器
docker import [-m '修改信息'] [-c 修改dockerfile命令] 導出容器存儲名稱 [導入容器後鏡像名稱] 
3.7 保存修改

Docker容器可能在後續中進行了一些配置修改,爲了保存容器這些修改爲鏡像,方便後續所有節點使用。Docker提供命令docker commit,就像代碼提交一樣將會生成一個新的鏡像

// 保存容器
docker commit [-m '提交鏡像保存信息'] 需要保存的容器 保存後鏡像名稱

四:深入容器

容器運行過程中深入容器內部探究可以幫助我們更精準的定位某些問題,Docker封裝了命令docker exec創建虛擬客戶端對容器內環境進行操作

// docker exec 進入容器基本命令
// -i 保持輸入流 -t 創建僞終端
// sh/bash 兩種客戶端,推薦bash功能更多
docker exec -it redis-exec bash

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章