1. 程式人生 > >Docker學習筆記1:入門使用

Docker學習筆記1:入門使用

一、Docker簡介

Docker (訪問官網) 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。(以上資訊來源於百度百科)好吧,讀完之後,對於初學者來說,沒有任何*用,依然不知所云。下面介紹一下Docker中最基本的幾個概念,就直接來安裝使用一下。

Docker映象:

Docker映象(image)類似於虛擬機器映象,可以將它理解為一個面向Docker引擎的只讀模板,包含了 檔案系統。映象是建立容器的基礎,通過版本管理和增量的檔案系統,Docker提供了一套很簡單的機制來建立和更新現有映象,也可以直接從網上下載製作好的映象, 使用成本很小。

Docker容器:

Docker容器(container)類似於一個輕量級的沙箱,Docker應用容器來使用和隔離應用。容器是從映象建立的應用執行例項,可以將其啟動、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。
映象自身是隻讀的,容器從映象啟動時, Docker會在映象的最上層建立一個可寫層,映象本身將不會改變。

Docker倉庫:

Docker倉庫(repository)類似於程式碼倉庫,是Docker集中存放映象的場所。注意,註冊伺服器(registry)並不是一個東西,實際上,註冊伺服器上存放倉庫的地方。

目前,最大的公開倉庫是Docker Hub,存放了大量的image供使用者下載,國內的有Docker Pool等,可以提供穩定的訪問,當然我們也可以建立自己的私有倉庫。

二、Docker安裝

Docker在Windows、Mac、Linux系統上都提供了相應的支援,可以在這三種平臺上安裝,這裡主要介紹在Linux系統上的安裝,使用的是Ubutnu16.04的系統。

1、安裝虛擬機器和OS

使用虛擬機器來產生和我們所用的不一樣的系統,筆者使用的是Windows的系統,裝上了VMware虛擬機器後,在虛擬機器裡面裝上Ubuntu系統,整個過程很簡單,在這裡不做過多敘述。

注意的是,在安裝虛擬機器之後,需要我們開啟CPU的虛擬化技術。首先要在虛擬機器設定中開啟如下“虛擬機器引擎”中的虛擬化功能,如下所示;然後,還需要在BIOS中enable虛擬化,不同的電腦可能會有不同的BIOS選項。

虛擬機器設定

2、在Ubuntu中安裝docker

在Linux中安裝Docker也不復雜,這裡主要參考了Docker官方文件來安裝。基本步驟如下:

  1. 解除安裝舊的版本(如果有的話) apt-get remove docker docker-engine docker.io
  2. 由於Ubutnu系統支援相關的檔案系統,這裡略過相關的檢查(詳細資訊)。更新軟體源:sudo apt-get update
  3. 安裝Docker,這裡選擇的是ce版本的最新版:sudo apt-get install docker-ce,如果報錯,可以按照提示更改,如執行apt install docker.io進行安裝

安裝完成後,執行docker --version,如果正常輸出版本資訊,則表示安裝成功。

3、hello world

按照慣例,我們需要執行一個hello world來檢驗一下。在終端中輸入,docker run hello-world之後,可以看到如下輸出:

hello world

這條命令下載了一個image,並在一個container中啟動了它,輸出資訊後又退出了。

三、Docker基礎命令使用

Docker支援的命令有很多,任何操作都要通過命令列來完成,可以執行docker run --help來檢視支援的所有命令。其輸出如下:

Usage:  docker [Options] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "/home/xu/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level

......此處省略大量輸出

可以看到命令非常的多,但是也是有規律可循的。下面這張圖簡單的描述了docker的常用命令。可以看見,主要是容器、映象、註冊伺服器之間的互相操作。

docker命令

1、映象相關命令

獲取映象:

docker pull NAME[:Tag]

這裡的意思是從Docker Hub中下載映象,如果不加Tag,則下載其最新版(latest),如下所示下載了一個叫做selenium/hub的映象,預設其最新版,注意要在root許可權下操作。

docker pull

檢視映象資訊:

docker images

其輸出資訊如下:

REPOSITORY      TAG      IMAGE ID      CREATED     SIZE
#映象來源的倉庫  、標籤 、映象ID(唯一的)、建立時間、  映象大小

搜尋映象:

docker search  IMAGE_NAME

刪除映象:

docker rmi NAME[:Tag]

需要注意的是,有時使用映象ID去刪除映象,會提示映象間有依賴而無法刪除。

存出&載入和上傳映象:

存出:docker save -o OUTPUT_NAME.tar image_name
載入:docker load --input tar_name
用docker push命令上傳image到倉庫。

建立映象:

映象的操作裡面操作映象是比較重要的,有3種方式:

  1. 基於已有映象容器建立
  2. 基於本地模本匯入
  3. 基於dockerfile建立

方式2就是上一條命令,存出和載入映象;用dockerfile檔案建立映象,會涉及到其他的一系列命令;這裡我們說一說基於已有容器建立映象:

我們對已有的映象操作時,是對其的一個例項容器在進行操作,已Ubuntu為例,我們進如系統中進行操作之後(比如安裝了JDK),如果此時用exit命令退出,那麼我們測操作並不會被儲存下來,而是丟掉了(即下次使用Ubuntu時仍需要我們安裝JDK)。

這時我們可以使用docker commit 命令來提交在容器裡的操作,以形成新的image。而舊的image我們可以將其刪掉以節省空間。常用格式如下:docker commit [-a 作者資訊] [-m 提交資訊] container_id new_image_name

2、容器相關命令

建立和啟動容器:
docker create : 新建的容器處於停止狀態,可以使用docker start命令來啟動它。
docker run ,相當於先docker create,再docker start啟動它,常用的命令格式:docker run -it image_name command,-i 表示讓容器的標準輸入保持開啟,-t 選項讓docker分配一個偽終端,並繫結到容器的標準輸入上,可以簡單的認為-it就是讓容器以互動的方式執行。進入容器之後,可以用Ctrl+D或者exit來退出容器。-d 後臺執行(守護態)

終止容器:

docker stop container_name

進入容器:
使用-d讓容器以守護態執行的時候,無法看到容器中的資訊,如果需要進入容器中的話,可以用以下幾種方法:

docker attach container_name/id
docker exec -it container_name/id command

刪除容器:
docker rm container,-f 強行刪除

檢視容器狀態:
docker ps 檢視容器狀態,可以新增的選項很多:
-a :顯示所有的容器,包括未執行的。
-f :根據條件過濾顯示的內容。
–format :指定返回值的模板檔案。
-l :顯示最近建立的容器。
-n :列出最近建立的n個容器。
–no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的檔案大小。

常用操作命令列如下:
殺死所有容器:docker kill $(docker ps -a -q )
刪除所有容器:docker rm -f $(docker ps -a -q)
監控所有容器數量:docker ps -a -q | wc -l
正在執行的容器的數量:docker ps -q | wc -l