容器化技術——Docker專題三 | 鏡像、容器常用命令

本文章是在網易云課堂的課程學習中編寫,部分圖片從網易云課堂ppt引用

【Docker鏡像操作】

1、拉取鏡像

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標簽]

  • 選項:可以通過 docker pull --help 命令看到
  • 鏡像倉庫地址:地址的格式一般是 <域名/IP>[:端口號]。默認地址是 Docker Hub。
  • 倉庫名:如之前所說,這里的倉庫名是兩段式名稱,即 <用戶名>/<軟件名>。對于 Docker Hub,如果不給出用戶名,則默認為 library,也就是官方鏡像。

比如:docker pull ubuntu:16.04,沒有給出 Docker鏡像倉庫地址,將會從 Docker Hub 的 library/ubuntu 倉庫中獲取鏡像

image

2、運行鏡像

有了鏡像后,我們就能以這個鏡像為基礎,啟動并運行一個容器。以上面拉取的 ubuntu:16.04 為例

docker run -it --rm ubuntu:16.04 bash

  • -it:這是兩個參數。-i:交互式操作, -t:終端。這樣可以進入bash 執行命令并查看返回結果
  • -rm:容器退出后隨之將其刪除。默認情況下,退出的容器并不會立即刪除,除非手動docker rm。如果不需要排障和保留結果,則可以使用--rm 避免浪費空間
  • ubuntu:16.04:以ubuntu:16.04 鏡像為基礎來啟動容器
  • bash:放在鏡像名后的是命令,使用bash可以有個交互式 Shell

執行后,進入到容器中,可以執行命令并查看結果。exit 可以退出容器

image

3、列出鏡像

3.1 查看倉庫名、標簽、鏡像 ID、創建時間 以及 所占用的空間

docker image ls

docker images

image

不能將docker image ls 列表中的鏡像體積總和作為所有鏡像實際硬盤消耗。
Docker 鏡像是多層存儲結構,并且可以繼承、復用,因此不同鏡像可能會因為使用相同的基礎鏡像,從而擁有共同的層。
由于Docker 使用 Union FS,相同的層只需要保存一份即可,因此實際鏡像硬盤占用空間可能比這個列表中的鏡像大小總和要小的多。

3.2 查看鏡像、容器、數據卷所占用的空間

docker system df

image

3.3 虛懸鏡像(倉庫名、標簽均為none的鏡像)

一般來說,虛懸鏡像已經失去了存在的價值,是可以刪除的

docker image ls -f dangling=true #查看虛懸鏡像

  • -f:即--filter 是一個過濾器參數

docker image prune #刪除虛懸鏡像

3.4 中間層鏡像

中間層鏡像是其它鏡像所依賴的鏡像,默認的 docker image ls 列表中只會顯示頂層鏡像。中間層鏡像不能隨意刪除,否則惠導致上層鏡像丟失依賴而出錯

docker image ls -a

3.5 列出部分鏡像

指定倉庫名和標簽,即可列出特定的某個鏡像,還可以加上過濾器參數 -f

docker image ls ubuntu #列出ubuntu鏡像

docker image ls ubuntu:16.04 #列出 ubuntu:16.04 鏡像

docker image ls -fsince=mongo:3.2 #列出在 mongo:3.2 之后建立的鏡像

4、刪除本地鏡像

4.1 單個刪除

docker image rm [選項] <鏡像1> [<鏡像2> ...]

  • <鏡像>可以是鏡像短 ID、鏡像長 ID、鏡像名 或者 鏡像摘要

比如:docker image rm -f 501

4.2 批量刪除

可以使用 docker image ls -q 來配合使用 docker image rm,這樣可以成批的刪除希望刪除的鏡像

docker image rm $(docker image ls -q ubuntu)

或者刪除所有在 ubuntu:16:04 之前的鏡像:

docker image rm $(docker image ls -q -f before=ubuntu:16.04)

【Docker容器操作】

1、啟動容器

啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另一種是將在終止狀態(stopped)的容器重新啟動。

docker run ubuntu:16.04 /bin/echo 'Hello world' #基于鏡像啟動容器,并輸出‘Hello world’

docker container start 或者 docker start #啟動已終止容器

docker run -it ubuntu:16.04 /bin/bash #啟動一個 bash 終端,允許用戶進行交互

  • -t :讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上
  • -i :讓容器的標準輸入保持打開

當利用 docker run 來創建容器時,Docker 在后臺運行的標準操作包括:

  • 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載

  • 利用鏡像創建并啟動一個容器

  • 分配一個文件系統,并在只讀的鏡像層外面掛載一層可讀寫層

  • 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去

  • 從地址池配置一個 ip 地址給容器

  • 執行用戶指定的應用程序

  • 執行完畢后容器被終止

2、后臺運行容器

通過添加-d參數,可以讓Docker在后臺運行,而不是直接把執行命令的結果輸出到當前宿主機下

docker run -d hello-world #不會輸出日志,只會打印容器id

docker logs 容器id #查看后臺的輸出結果

注: 容器是否會長久運行,是和 docker run 指定的命令有關,和 -d 參數無關。

3、停止運行的容器

docker container stop 容器id #終止運行中的容器

docker container ls -a #查看終止狀態的容器

docker container start 容器id #啟動終止狀態的容器

docker container restart 容器id #將一個運行態的容器終止,然后重啟啟動

此外,當 Docker 容器中指定的應用終結時,容器會自動終止

4、進入容器

docker exec -it 容器id /bin/bash

5、導出和導入容器

5.1 導出容器快照到本地文件

docker export 容器id > 文件名.zip

比如:docker export 7691a814370e > ubuntu.tar

5.2 導入容器

cat 導入文件名.zip | docker import - 鏡像用戶/鏡像名:鏡像版本

比如:cat ubuntu.zip | docker import - test/ubuntu:v1.0

也可以通過指定 URL 或者某個目錄來導入,比如:

docker import http://example.com/exampleimage.tgz example/imagerepo

6、刪除容器

docker container rm ubuntu:16.04 #刪除終止狀態的容器。如果要刪除一個運行中的容器,可以添加 -f 參數

docker container prune #批量清理所有處于終止狀態的容器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容