Docker入門-經常使用命令

Docker鏡像操做

Docker運行容器前須要本地存在對應的鏡像,若是本地不存在該鏡像,Docker會從鏡像倉庫下載該鏡像。redis

獲取鏡像

從Docker鏡像倉庫獲取鏡像的命令是docker pull。其命令格式爲:docker

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

具體的選項能夠經過docker pull --help命令看到,這裏咱們說一下鏡像名稱的格式。Docker鏡像倉庫地址:地址的格式通常是<域名/IP>[:端口號]。默認地址是Docker Hub。倉庫名:如以前所說,這裏的倉庫名是兩段式名稱,即<用戶名>/<軟件名>。對於Docker Hub,若是不給出用戶名,則默認爲library,也就是官方鏡像。shell

docker pull ubuntu:16.04

上面的命令中沒有給出Docker鏡像倉庫地址,所以將會從Docker Hub獲取鏡像。而鏡像名稱是ubuntu:16.04,所以將會獲取官方鏡像library/ubuntu倉庫中標籤爲16.04的鏡像。ubuntu

運行鏡像

有了鏡像後,咱們就可以以這個鏡像爲基礎啓動並運行一個容器。以上面的ubuntu:16.04爲例,若是咱們打算啓動裏面的bash而且進行交互式操做的話,能夠執行下面的命令。bash

docker run -it --rm ubuntu:16.04 bash

-it:這是兩個參數,一個是-i:交互式操做,一個是-t終端。spa

--rm:這個參數是說容器退出後隨之將其刪除操作系統

ubuntu:16.04:這是指用ubuntu:16.04鏡像爲基礎來啓動容器。rest

bash:放在鏡像名後的是命令,這裏咱們但願有個交互式shell,所以用的是bash。日誌

最後咱們經過exit退出了這個容器。code

列出鏡像

要想列出已經下載下來的鏡像,能夠使用docker image ls命令。列表包含了倉庫名、標籤、鏡像ID、建立時間以及所佔用的空間。

docker image ls

查看鏡像、容器、數據卷所佔用的空間。

docker system df

倉庫名、標籤均爲<none>的鏡像稱爲虛懸鏡像(dangling image),顯示這類鏡像

docker image ls -f dangling=true

通常來講,虛懸鏡像已經失去了存在的價值,是能夠隨意刪除的,能夠用下面的命令刪除

docker image prune

刪除本地鏡像

若是要刪除本地的鏡像,能夠使用docker image rm命令,其格式爲:

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

其中,<鏡像>能夠是鏡像短ID、鏡像長ID、鏡像名或者鏡像摘要。

使用docker image ls -q來配置docker image rm,這樣能夠批量刪除但願刪除的鏡像。

docker image rm $(docker image ls -q ubuntu) #刪除全部倉庫名爲redis的鏡像

或者刪除全部在ubuntu:16.04以前的鏡像:

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

Docker容器操做

容器是獨立運行的一個或一組應該,以及它們運行態環境。對應的,虛擬機能夠理解爲模擬運行的一整套操做系統(提供了運行態環境和其餘系統環境)和跑在上面的應用。

啓動容器

啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將在終止狀態(stopped)的容器從新啓動。

由於Docker的容器實是輕量級的,用戶能夠隨時刪除和新建立容器。

新建並啓動

docker run

輸出一個「Hello World」,以後終止容器。

docker run ubuntu:16.04 /bin/echo "Hello world"

啓動已終止容器

docker container start 或者 docker start

啓動一個bash終端,容許用戶進行交互。

docker run -t -i ubuntu:16.04 /bin/bash

-t 讓Docker分配一個僞終端並綁定到容器的標準輸入上,-i則讓容器的標準輸入保持打開。當利用docker run來建立容器時,Docker在後臺運行的標準操做包括:

  • 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
  • 利用鏡像建立並啓動一個容器
  • 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層
  • 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
  • 從地址池配置一個ip地址給容器
  • 執行用戶指定的應用程序
  • 執行完畢後容器被終止

後臺運行

不少時間,須要讓Docker在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下。此時,能夠經過添加-d參數來實現。

若是不使用-d參數運行容器,好比docker run hello-world會把日誌打印在控制檯。 若是使用-d參數運行容器,好比docker run -d hello-world不會輸出日誌,只會打印容器id(輸出結果能夠用docker logs查看);

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

中止運行的容器

能夠使用docker container stop來終止一個運行中的容器。終止狀態的容器能夠用docker container ls -a 命令看到。處於終止狀態的容器,能夠經過docker container start命令來從新啓動。此處,docker container restart命令會將一個運行態的容器終止,處於再從新啓動它。

進入容器

在使用-d參數時,容器啓動後進入後臺,某些時候須要進入容器進行操做,使用docker exec命令能夠進入到運行中。

exec命令 -i -t參數

docker exec後邊能夠跟多個參數,這是主要說明 -i -t參數。 只用-i參數時,因爲沒有分配僞終端,界面沒有咱們熟悉的Linux命令提示符,但命令執行結果仍然能夠返回。當-i -t參數一塊兒使用時,則能夠看到咱們熟悉的Linux命令提示符。

docker exec -it 容器id /bin/bash

導出和導入容器

導出容器

若是要導出本地某個容器,能夠使用docker export命令。

docker export 容器ID>導出文件名.tar

導入容器

能夠使用docker import從容器快照文件中再導入爲鏡像

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

此外,也能夠經過指定URL或者某個目錄來導入

docker import http://study.163.com/image.tgz example/imagerepo

刪除容器

刪除容器

能夠使用docker container rm來刪除一個處於終止狀態的容器

docker container rm ubuntu:16:04

若是要刪除一個運行中的容器,能夠添加-f參數。Docker會發送SIGKILL信號給容器。

清楚全部處於終止狀態的容器

用docker container ls -a 命令能夠查看全部已經建立的包括終止狀態的容器,若是數量太多要一個個刪除能夠會很麻煩,用下面的命令能夠清理掉全部處於終止狀態的容器。

docker container prune
相關文章
相關標籤/搜索