Docker開發實踐筆記一

容器是一個打包了應用和服務的環境。它是一個輕量級的虛擬機,每個容器都由一組特定的應用和必要的依賴組成。git

特別說明:在windows上使用git-bash來運行docker命令時,若是使用了-i -t參數會報錯:docker

$ docker run -it --name my docker.io/centos
the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'shell

錯誤信息已明確說明要使用winpty來運行。即:ubuntu

winpty docker run -it --name my docker.io/centoswindows

一、容器的管理操做centos

1.1建立容器bash

對於容器常見的命令包括:建立、查看、啓動、終止(中止)、刪除。服務器

建立容器可使用docker create和docker run,它們的區別是,docker create建立容器完成後,容器處於中止狀態,而docker run建立容器後同時啓動容器(至關於執行了:docker create -> docker start)。網絡

docker create 鏡像名稱

好比:docker create ubuntu  //不帶 「:版本號」 時將使用官方最新的鏡像。

使用docker ps 能夠查看當前正在運行的容器,使用docker ps -a 能夠查看全部容器,包括運行中和未運行的容器。

docker run 能夠建立交互型容器和後臺型容器。url

docker run -i -t --name=inspect_shell ubuntu /bin/bash //將建立交互型容器

docker run -d --name=daemon_while ubuntu /bin/bash -c 
"while true;do echo hello world;sleep 1;done" //將建立後臺型容器

上面--name參數的名稱必須是惟一的不能重複。

建立容器時首先會搜索本地是否存在該鏡像,若是不存在就從公有倉庫下載,不然直接使用本地鏡像建立容器,容器的文件系統是在只讀的鏡像文件上增長一層可讀寫的文件層,並經過網橋的方式將該網絡接口橋接到宿主主機上去,而後該虛擬網絡接口分配一個IP地址。

1.2 查看容器

使用docker ps 命令便可,能夠跟不一樣的參數,具體使用查看幫助便可:docker ps --help

docker ps  //只查看當前運行中的容器

docker ps -l  //列出最後建立的容器

docker ps -n=x  //查看最後建立的x個容器

結果中的狀態是Exited時,括號時的數字爲0時正常退出,其它值都爲異常退出。

1.3啓動容器

經過docker run 建立的容器直接進行運行狀態,而使用docker create建立的容器須要使用docker start來啓動它。

docker start 容器ID或容器名稱

docker run --restart=always  --name docker_restart -d ubuntu /bin/sh -c 
"while rue;do echo hello world;sleep 1;done"

docker run ubuntu echo "Hello docker" //此容器輸出後立刻就中止了
docker ps -a 能夠查看到容器的ID和名稱,要想再次啓動此容器而不是建立一個新的容器可使用下面的方式:
docker start -i 容器ID //多了個-i參數,代表輸出到終端,若是不帶-i參數是看不到Hello docker輸出的。

restart爲always是無論容器返回碼是什麼都會嘗試重啓容器,另外能夠設置成--restart=on-failure:5 來設置非0返回碼時重啓嘗試的次數。

1.4終止容器

正常退出容器使用 docker stop 容器名稱或容器ID,另外可使用docker kill 強制退出容器。

docker stop 容器名稱或容器ID
docker kill 容器名稱或容器ID

1.5刪除容器

docker rm 容器ID或容器名稱 //只能刪除未運行的容器

docker rm -f 容器ID或容器名稱 //強制刪除,運行中的容器可將刪除

docker rm `docker ps -a -q` //批量刪除全部容器,-q參數只列出容器的ID

二、容器內信息獲取和命令執行

2.1依附容器

依附容器命令只能用在交互型容器中,就是以 -i -t 參數運行的容器,能夠依附若干的終端,並且多個終端操做是同步的,就是你在其中一個終端輸入了什麼,在其它的終端也將顯示什麼,退中一個終端使用exit退出,全部依附的終端都將退出。

docker run -i -t ubuntu /bin/sh

而後再開另外一個終端使用

docker attach ubuntu 
//便可以進入交互界面,這樣就會有兩個終端,並且是同步的。此命令目前輸入完後必須按兩次回車才正常出現交互界面。

後臺型容器是沒法使用此命令依賴終端的。

ps:若是隻是要進入到運行中的容器,並且容器也不必定是使用 -i -t運行的,可使用下面的命令:

docker exec -it 容器ID或名稱 bash

2.2查看容器日誌

交互型容器可臺經過依附命令直接進入查看日誌,然後臺型容器能夠經過docker logs 命令來查看容器日誌。

docker run -d --name =daemon_logs ubuntu /bin/bash -c "for((i=0;1;i++));do echo $i;sleep 1;done;" 
//注意這裏要使用雙引號

docker logs -f deamon_logs //-f 實時查看容器日誌

docker logs -f --tail=x daemon_logs //只實時查看最後x行日誌

docker logs -f --tail=5 -t daemon_logs //-t查看日誌產生的時間

 2.3查看容器進程

docker top能夠查看容器內正在運行的進程

docker top 容器ID或容器名稱

 2.4查看容器信息

docker inspect用於查看容器的配置信息,包括容器名稱、環境變量、運行命令、主機配置、網絡配置和數據卷配置等。

docker inspect 容器ID或容器名稱

詳細使用能夠查看幫助,docker inspect --help

2.5容器內執行命令

在容器啓動的時候,一般須要指定須要執行的程序,然而有時候咱們須要在容器運行以後中途啓動另外一個程序 。從Docker 1.3開始,咱們可使用docker exec命令在容器中運行新的任務。它能夠建立兩種任務:後臺型任務和交互型任務。

docker exec -d daemon_dave touch /etc/new_config_file //後臺型任務

docker exec -i -t daemon_dave /bin/bash //交互型任務,這個和建立交互型容器同樣。

注意:運行此命令容器都必須是運行中

 三、容器的導入和導出

用戶不只能夠把容器提交到公共服務器上,也能夠將容器導出到本地文件系統中,再須要的時候能夠從新導入到Docker運行環境中。

容器導出:

docker run -i -t --name=inspect_import ubuntu /bin/bash

而後對容器按須要修改,安裝須要的軟件等,完成後執行下面的命令導出到本地系統中。

docker export inspect_import > my_container.tar

容器導入:

cat my_container.tar |docker import - imported:container
//imported爲鏡像名稱,container爲鏡像標籤(tag)

還能夠從url導入網絡上的容器:
docker import url res:tag

導入成功後,使用docker images 命令能夠查看導入的鏡像。

 

Docker開發實踐筆記二

相關文章
相關標籤/搜索