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[root@4f6fdd17f86f /]#

三、容器使用

1、容器ID

 

可以看到hostname就是容器的ID

查看cat /etc/hosts

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

2、容器中安裝軟件

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

[root@4f6fdd17f86f /]# yum install vim

3、退出容器

docker ps –a查看當前系統中容器的列表

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

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

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

4、容器命名

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

[root@dst6 ~]# docker run --name bigdata_container -i -t centos /bin/bash

[root@503b4ba12b02 /]# 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而不會返回其他信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM