1. 程式人生 > >03_Docker入門(上)之容器建立、容器使用、容器刪除

03_Docker入門(上)之容器建立、容器使用、容器刪除

運維架構服務dockerdocker入門

一、確保docker就緒

檢視docker程式是否存在,功能是否正常

Docker可執行程式的info命令,該命令會返回所有容器和映象的數量、Docker使用的執行驅動和儲存驅動以及Docker的基本配置。

二、構建第一個容器

啟動容器,用docker run命令建立容器

docker run -i -t centos /bin/bash

命令解釋:告訴docker執行docker run命令,並指定了-i-t兩個命令列引數,-i: 以互動模式執行容器,通常與 -t 同時使用;-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

命令中用的是centos映象,首先docker會檢查本地是否存在centos映象,如果本地還沒有該映象的話,那麼docker就會連線官方維護的Docker Hub Registry,檢視Docker Hub中是否有該映象。Docker一旦找到該映象,就會下載該映象並將其儲存到本地宿主機。

之後,Docker在檔案系統內部用這個映象建立一個新容器。該容器擁有自己的網路、IP地址。以及一個用來和宿主機進行通訊的橋接網路介面。最後,告訴Docker在新容器中要執行什麼命令,本例中執行/bin/bash命令啟動了一個Bash shell

當容器建立完畢後,Docker就會執行容器中的/bin/bash

命令,這時就會看到容器內的shell[[email protected] /]#

三、容器使用

1、容器ID

 

可以看到hostname就是容器的ID

檢視cat /etc/hosts

Docker已在Hosts檔案為該容器的IP地址添加了一條主機配置項。

2、容器中安裝軟體

容器中安裝vim軟體,可以在容器中做任何想做的事情,退出的時候輸入exit,就可以返回到centos宿主機的命令列提示符。

[[email protected] /]# yum install vim

3、退出容器

docker ps –a檢視當前系統中容器的列表

預設情況下docker ps只能看到正在執行的容器,但是加上-a會列出所有的容器,包括正在執行的和已經停止的。

docker ps –l  會列出最後一次執行的容器,包括正在執行的和已經停止的。

從該命令的輸出結果中我們可以看到容器的很多有用資訊:ID、用於建立該容器的映象、容器最後執行的命令、建立時間以及容器的退出狀態(上面退出狀態為0,因為容器是通過正常的exit命令退出)

4、容器命名

Docker會為我們建立的每一個容器自動生成一個隨機的名稱。如果想為容器指定一個名稱,而不是使用自動生成的名稱,則可以用—name標誌來實現。

[[email protected] ~]# docker run --name bigdata_container -i -t centos /bin/bash

[[email protected] /]# exit

容器的名稱必須是唯一的。如果我們試圖建立兩個名稱相同的容器,則命令失敗。如果要使用的容器名稱已經存在,可以先用docker rm命令刪除已有的同名容器後,再來建立新的容器。

5、啟動停止的容器

可以用容器ID或者容器name來啟動容器。

docker start name/ID

6、附著到容器上

通過命令,重新附著到已經執行的容器上。

docker attch name/ID

如果推出shell,則容器也會停止。

7、建立守護式容器

除了建立互動式執行的容器,可以建立長期執行的容器。守護式容器沒有互動式會話,非常適合執行應用程式和服務。

docker run --name bigdata_daemon -d centos /bin/sh -c "while true;do echo hello world;sleep 1;done"

如上命令用了-d引數,因此Docker會將容器放到後臺執行。

在容器裡運行了一個while迴圈,該迴圈會一直列印hello world,直到容器或程序停止執行。

通過組合使用引數,可以發現docker run命令並沒有像上一個容器一樣將主機的控制檯附著到新的shell會話上,而是僅僅返回了一個容器ID而已。可以用docker ps檢視正在執行的容器,或者docker attch附著到容器上檢視。

可以用docker logs來獲取容器的日誌:

Docker會輸出最後幾條日誌項並返回。也可以用-f引數來監控Docker的日誌,與tail –f命令非常類似。

也可以跟蹤容易日誌的某一個片段,只需要在logs後使用tail命令即可。

docker logs --tail 10 bigdata_daemon獲取日誌的最後10行內容。

docker logs --tail 0 –f bigdata_daemon來跟蹤某個容器的最新日誌而不必讀取整個日誌檔案。

為了方便除錯,可以使用-t標誌來為每條日誌減傷時間戳。

8、檢視容器內的程序

docker top bigdata_daemon

執行之後,可以看到容器內的所有程序、執行程序的使用者及程序ID

9、容器內部執行程序

如上面的例子,如果我們運行了while迴圈之後,想開啟一個新的shell互動式任務,可以用exec命令。

docker exec -t -i bigdata_daemon /bin/bash

10、停止容器

docker stop name/ID

docker stop bigdata_daemon

11、自動重啟容器

如果由於某種錯誤而導致容器停止執行,還可以通過—restart標誌,讓Docker自動重新啟動該容器。--restart標誌會檢查容器的退出程式碼,並據此來決定是否重啟容器。預設Docker不會重啟容器的。

docker run --restart=always --name bigdata_daemon -d centos /bin/sh -c "while true;do echo hello world;sleep 1;done"

除了always,還可以將標誌設為on-failure,這樣,只有當容器的退出程式碼為非0值的時候,才會自動重啟。另外,on0failure還接受一個可選的從起次數引數。

--restart=on-failure:5

當容器退出程式碼為非0時,Docker會自動重啟該容器,最多重啟5次。

12、深入容器

docker ps可以獲取容器的資訊。用docker inspect來獲取更多的容器資訊。

docker inspect bigdata_daemon

docker inspect命令會對容器進行詳細的檢查,然後返回其配置資訊,包括名稱、命令、網路配置以及很多有用的資料。

也可以用-f或者--format標誌來選定檢視結果。

docker inspect --format='{{.State.Running}}' bigdata_daemon

也可以同時制定多個容器,並顯示每個容器的輸出結果。

13、刪除容器

docker rm命令來刪除。

docker rm bigdata_daemon

執行中的容器是無法產出的,必須通過docker stop或者docker kill命令停止容器,才能將其刪除。

一次刪除所有容器:docker rm ‘docker ps -a -q’

-a標誌代表列出所有的容器,-q標誌則表示返回容器的ID而不會返回其他資訊

 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">