Docker學習筆記三 入門

3.1 驗證Docker正常啓動docker

使用docker info 命令,返回全部容器和鏡像的數量、docker版本、使用的執行驅動和存儲驅動以及Docker的基本配置等。以前說過Docker是基於client-server架構,它有一個docker程序,既能作客戶端又能作服務器端。做爲客戶端時,docker程序向Docker守護進程發送請求,而後再對返回的請求結果進行處理。shell

3.2 運行第一個容器ubuntu

可以使用docker run 命令建立容器。它提供了容器的建立到啓動功能。運行bash

docker run -i -t ubuntu /bin/bash
  • 參數 -i 保證容器中STDIN是開啓的;
  • 參數-t告訴Docker爲要建立的容器分配一個僞tty終端。這樣新建的容器才能提供一個交互式shell;
  • 接下來告訴Docker基於什麼鏡像來建立容器,上例使用的是ubuntu鏡像,它是一個基礎鏡像,由Docker公司提供,保存在Docker Hub Registry上。
  • 最後告訴Docker在新容器中要運行什麼命令,本例中在容器中運行/bin/bash命令啓動了一個Bash shell。

運行命令後Docker會檢查本地是否存在ubuntu鏡像,若是沒有就會鏈接Docker Hub Registry查看是否有該鏡像,一旦找到就會下載並保存到本地宿主機中。服務器

隨後Docker在文件系統內部用這個鏡像建立了一個新容器。它擁有本身的IP地址,以及一個用來和宿主機進行通訊的橋接網絡接口。網絡

當容器建立完畢以後,Docker會執行容器中的/bin/bash命令,這時就能夠看到容器內的shell了。架構

3.3 使用第一個容器命令行

經過啓動咱們以root用戶登陸到了新容器紅。這是一個完整的ubuntu系統。rest

輸入exit就能夠從容器返回到宿主機的命令行了。同時容器也中止運行。可是容器仍然是存在的。可使用docker ps -a 命令查看當前系統中的容器列表。日誌

docker ps命令只顯示正在運行的容器,添加-a參數列出全部容器。-l 參數列出最後一次運行的容器,包括正在運行和已經中止的。

能夠看出有三種方式可惟一指代一個容器:長UUID、短UUID和名稱。

3.4 容器命名

以前建立容器時Docker自動生成了一個隨機名稱。若是建立容器時想指定名稱可使用--name參數。

docker run --name ivan_container -i -t ubuntu /bin/bash

一個合法的容器名稱只能包含如下字符:小寫字母、大寫字母、數字、下劃線、圓點、橫線。

容器的命名是惟一的

docker rm 容器名 能夠刪除容器。

3.5 從新啓動已中止的容器

docker start 容器名
docker start 容器ID

3.6 附着在容器上

Docker容器從新啓動時,會沿用docker run 命令時指定的參數來運行,所以容器從新啓動後會運行一個交互式會話shell。

能夠用「docker attach 容器名/容器ID「命令從新附着到該容器的會話上。運行完命令後須要按下回車進入該會話。

3.7 建立守護式容器

除了上面建立的交互式運行的容器,也能夠建立長期運行的守護式容器。它沒有交互式會話,很是適合運行應用程序和服務。大多數時候都須要以守護式來運行容器。

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

在docker run上使用參數-d,容器會被放到後臺運行。

3.8 查看容器日誌

docker logs 容器名

-f 參數監控容器實時日誌

docker logs -f 容器名

用Ctrl + C退出日誌監控。

--tail 行數 獲取最後幾行日誌

docker logs --tail 10 容器名

使用

docker logs --tail 0 -f 容器名

監控某個容器的最新日誌而沒必要讀取整個日誌文件。

使用 -t 參數爲每條日誌項加上時間戳。

docker logs -ft 容器名

3.9 查看容器內的進程

docker top 容器名

3.10 在容器內部運行進程

在Docker 1.3以後,能夠經過docker exec命令在容器被額外啓動新進程。能夠在容器內運行的進程有兩種類型:後臺任務和交互式任務。

後臺任務的例子:

docker exec -d 容器名 touch /etc/new_config_file

-d 表示須要運行一個後臺進程。以後是指定運行的容器和執行的命令。本例中新建了一個空文件。

交互任務的例子:

docker exec -t -i 容器名 /bin/bash

3.11 中止守護式容器

docker stop 容器名

docker stop 命令會向Docker容器進程發送SIGTERM信號。若是想快速中止某個容器,可使用docker kill命令向容器進程發送SIGKILL信號。

docker ps -n x 命令會顯示最後x個容器,不論容器正在運行仍是已經中止。

3.12 自動重啓容器

建立容器時能夠經過--restart參數讓Docker自動從新啓動該容器。--restart標誌會檢查容器的退出代碼,並據此來決定是否要重啓容器。

docker run --restrart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

--restart標誌被設置爲always,不管容器的退出代碼是什麼,Docker都會自動重啓該容器。除了always,還能夠設置爲on-failure,這樣只有當容器的退出代碼爲非0值得時候,纔會自動重啓。另外on-failure還接收一個可選的重啓次數參數:

--restart=on-failure:5

這樣當容器退出代碼非0時,Docker會嘗試自動重啓該容器,最後重啓5次。

--restart是1.2.0版本引入的。

3.13 詳細的容器信息

docker inspect 容器名

查看容器的詳細信息。使用-f --format來選定要查看的內容:

docker inspect --format='{{.State.Running}}' 容器名

查看容器的運行狀態。

docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器1 /容器2

查看容器的IP地址,能夠同時制定多個容器,如上例所示。

--format -f支持完整的Go語言模板。

還能夠瀏覽/var/lib/docker目錄來深刻了解Docker的工做原理。該目錄存放着Docker鏡像、容器以及容器的配置。全部的容器都保存在/var/lib/docker/containers目錄下。

3.14 刪除容器

使用docker rm刪除容器。

運行中的docker容器是沒法刪除的。必須先經過docker stop或docker kill 命令中止容器,才能將其刪除。

目前沒有辦法一次刪除全部容器,不過能夠經過小技巧來刪除:

docker rm 'docker ps -a -q'

-a 表示列出全部容器,-q表示只須要返回容器的ID不返回其餘信息。

相關文章
相關標籤/搜索