1. 程式人生 > >Docker基礎入門實戰

Docker基礎入門實戰

Docker(應用容器引擎)入門教程

目錄

  • docker簡介
  • docker的特點
  • docker系統架構
  • 安裝docker
  • 如何使用docker
  • docker容器常用操作
  • docker命令彙總
  • 手工製作java映象
  • 使用dockerfile構造映象
  • 使用dockerRegistry管理映象
  • Spring Boot與docker整合
  • 小結

docker簡介

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。

一個完整的Docker有以下幾個部分組成:
1.docker引擎(Docker Engine)

docker引擎可理解為一個執行在伺服器上的後臺程序,也稱之為Docker Daemon,還有很多人稱它為Docker服務,因為它本質上就是一個服務,只要我們啟動該服務,我們就能隨時使用它。我們可以通過Docker命令客服端傳送相關Docker命令,並與Docker引擎進行通訊。

2.Docker客戶端(Docker Client)

實際上Docker客戶端有兩種,一種是我們剛提到的Docker命令客戶端,只要我們開啟命令終端視窗,並輸入相關Docker命令,就能操作Docker引擎。另一種Docker客戶端是REST API客戶端,我們本次是將重點放在Docker命令客服端方式上。

3.Docker映象(Docker Images)

Docker映象有點類似於我們曾經使用的光碟,光碟上刻錄了資料,只要我們將光碟放入光碟機中,就能讀取光碟中的資料,同樣。我們只需要獲取Docker映象(光碟),就能將其載入到Docker引擎(光碟機)中,並執行Docker映象中的程式。一般情況下,我們首先需要將程式打包到Docker映象中,隨後才能將Docker映象交給其他人使用。

4.Docker容器(Docker Containers)

當我們獲取到Docker映象以後,可以隨時執行該Docker映象,此時便會啟動一個Docker容器,該容器將執行映象中封裝的程式。如果我們將Docker映象理解為java類的話,那麼Docker容器就相當於java例項,在同一個Docker映象上理論上可執行無數個Docker容器,只要機器效能足夠好。

docker的特點

Docker是通過在底層封裝了Linux容器技術(LXC)來實現的,換句話說,Docker沒有創造出任何新的技術,僅僅是“新瓶裝老酒”而已,那麼Docker究竟要哪些特點。

1.快速執行
啟動虛擬機器需要幾分鐘,而啟動Docker只要幾秒鐘,開發效率瞬間提升了。

2.節省資源
Docker容器執行在Docker引擎上,可以直接利用宿主機資源無需佔用過多的系統開銷。

3.便於互動
傳統的軟體互動物是程式,而Docker時代互動物卻是映象,映象不僅封裝了程式,還包含了執行程式所需的相關環境。

4.容易管理
可以通過Docker客戶端自己操作Docker引擎,非常方便的管理Docker映象與容器

docker系統架構

在這裡插入圖片描述
上圖中包含了三部分:
(1)Client:
表示Docker客服端,可通過docker build命令建立Docker映象;可通過docker pull命令拉取Docker映象;可通過docker run命令執行Docker映象,從而啟動Docker容器。
(2)DOCKER_HOST:
表示執行Docker引擎的宿主機,其中包括Docker daemon後臺程序,可通過該程序來建立Docker映象,並在Docker映象上啟動Docker容器。
(3)Registry:
表示Docker官方映象註冊中心,其中包含了大量的Docker映象倉庫,可通過引擎拉取所需的Docker映象到宿主機上。

安裝docker

Docker官方建議我們將Docker引擎執行在Linux作業系統上,當然也可以執行在MacOSX或Windows作業系統上,只是不推薦在生產環境下使用而已。
對於Linux而言,可以直接執行Docker引擎。
對於Mac OSX或Windows而言,需要通過Linux VM(虛擬機器軟體)才能執行Docker引擎。

1.在CentOS中安裝Docker
在Linux作業系統上安裝docker,需要同時滿足一下幾個條件:

(1)CPU必須為64位;
(2)Linux核心必須在3.10版本以上。
在這裡插入圖片描述
PS:可以通過uname -a命令獲取以上資訊

步驟1.用root許可權更新yum包
為了安裝最新版本的Docker,我們需要使用如下命令更新yum包
$ su root
$ yum update

在這裡插入圖片描述
更新成功輸入y繼續
在這裡插入圖片描述
步驟2.新增yum的Docker倉庫包,命令如下:

tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

ps:上面這幾條命令是一條一條的新增不是全部寫在一起
步驟3.安裝Docker引擎,命令如下:

yum install docker-engine

步驟4.啟動Docker引擎,命令如下:

service docker start

步驟5.檢視Docker引擎版本號,命令如下:

docker version

或者查詢安裝過的包

yum list installed | grep docker

在這裡插入圖片描述

如何使用Docker

映象與容器是Docker引擎的兩大核心概念,我們將以Docker命令客戶端方式對這些概念進行描述。

Docker映象常用操作
1.列出映象,命令如下:

docker images

在這裡插入圖片描述
執行以上命令後,大家會看到一個空列表,因為我們本地目前還沒有任何映象,下面我們將從Docker Hub映象註冊中心拉取一個CentOS映象。
2.拉取映象,命令如下:

docker pull centos

在這裡插入圖片描述
執行以上命令後,Docker客戶端將連線Docker Hub,並自動從CentOS映象倉庫中下載最新版本的CentOS映象。下載完成後,可再次通過docker images命令列出映象。

以上表格中包含5個欄位,意義如下:

(1)REPOSITORY:表示映象倉庫的名稱,由於我們拉取的是centos映象,該映象存放在同名的centos映象倉庫中。
(2)TAG:表示映象的標籤,一般情況下帶有具體的版本或別名,此處的latest表示最新版本。
(3)IMAGE ID:表示映象的識別符號,稱為“映象ID”,具備唯一性,此處看到是一串12位的字串,實際上它是64位完整映象ID的縮略表達形式。
(4)CREATED:表示映象建立時間,使用離現在的時間來表示
(5)SIZE:表示映象位元組大小,可見當親centos映象只有200MB,它實際上是一個CentOS作業系統的精簡版。

ps:如果我們不記得映象倉庫的名字也沒關係,因為可以在Docker
Hub中通過映象關鍵字進行搜尋,當然也可以通過Docker命令的方式進行搜尋。
3.搜尋映象,命令如下:

docker search centos

在這裡插入圖片描述
執行以上命令後,將輸出帶有centos關鍵字的映象倉庫

以上表格中包含5個欄位意義如下:
(1)NAME:表示映象倉庫的名稱
(2)DESCRIPTION:表示映象倉庫的描述,此處只顯示了一部分描述。
(3)STARS:表示映象倉庫的收藏數,使用者可在Docker Hub上對映象倉庫進行收藏,一般可通過該數字體現映象倉庫受歡迎的程度。
(4)AUTOMATED:表示是否自動構建映象倉庫,使用者可以將自己的Docker Hub繫結到GitHub或Bitbucket賬號上,當代碼提交後,可自動構建映象倉庫
4.匯入與匯出映象,命令如下:
匯出CentOS映象為一個tar檔案(映象包),若不指定匯出的tar檔案路徑,則匯出的centos.tar檔案在當前目錄上;

docker save centos > centos.tar

匯出的centos.tar映象包檔案可隨時在另一臺Docker機器上匯入,命令如下:

docker load < centos.tar

當我們獲取了CentOS映象後,就能基於該映象啟動相應的容器,下面我們學習一些容器的常用操作

Docker容器常用操作
1.建立並啟動容器,命令如下:
使用一下命令在執行CentOS映象,從而建立並啟動CentOS容器;

docker run -i -t centos /bin/bash

以上命令:
(1)-i 選項:表示啟動容器後,開啟標準收入裝置(STDIN),可使用鍵盤進行輸入.
(2)-t 選項:表示啟動容器後,分配一個偽終端(pseudo-TTY),將與伺服器建立一個會話。
(3)centos引數:表示需要執行的映象名稱,標準格式為centos:latest,若為latest版本,則可省略。
(4)/bin/bash引數:表示雲行容器中的bash應用程式,因為我們此時並不需要執行其他程式,只想進入到容器中。

需要注意的是,該命令實際上首先從本地獲取CentOS映象,若本地沒有此映象,則從DockerHub拉取CentOS映象並放入本地,隨後才能根據CentOS映象建立並啟動CentOS容器。
在這裡插入圖片描述
命令符包括以下三部分:
(1)root:表示當前登入的使用者名稱,為超級管理員,預設情況下,都是以超級管理員身份進入Docker容器的。
(2)1f93f2f6fb05 :表示容器的識別符號,一般稱為“容器Id”,具備唯一性,此處看到的是一串12位的字串,實際上它是64位完整映象Id的縮略表達形式。
(3)/ :表示當前路徑,即輸入pwd命令所返回的結果。
我們可以在#符合後輸入Linuxmingl,可執行exit命令退出容器。

2.列出容器,命令如下:

docker ps

3.進入容器,命令如下:
使用一下命令需指定容器Id或容器名稱,只能進入執行中的容器

docker attach 197beb401e65

4.執行命令,命令如下:

docker exec -i -t 197beb401e65 ls -l

5.停止容器,命令如下:
需指定容器ID或名稱

docker stop 197beb401e65 

6.終止容器,命令如下:
需指定容器ID或名稱

docker kill 197beb401e65 

7.啟動容器,命令如下:
需指定容器ID或名稱

docker start 197beb401e65 

8.啟動容器,命令如下:
需指定容器ID或名稱

docker restart 197beb401e65 

9.啟動容器,命令如下:
需指定容器ID或名稱

docker rm 197beb401e65 

10.匯入與匯出容器,命令如下:
使用一下命令匯出一個容器為tar檔案(容器包)

docker export 197beb401e65 > centos.tar 

匯出的cento.tar容器包隨時可在另一臺Docker機器上匯入為映象,命令如下:

docker implrt foo.tar huangyong/centos:latest

Docker 命令彙總

Docker客戶端命令共有40多個,我們可通過一下命令檢視Docker所有的命令及其描述:

docker help

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述