02-Docker安裝
Docker安裝
Docker的架構圖
映象(image):
Docker 映象(Image)就是一個只讀的模板。映象可以用來建立 Docker 容器,一個映象可以建立很
多容器。 就好似 Java 中的 類和物件,類就是映象,容器就是物件!
容器(container):
-
Docker 利用容器(Container)獨立執行的一個或一組應用。容器是用映象建立的執行例項。
-
它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的,保證安全的平臺。
-
可以把容器看做是一個簡易版的 Linux 環境(包括root使用者許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式。
-
容器的定義和映象幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。
倉庫(repository):
-
倉庫(Repository)是集中存放映象檔案的場所。
-
倉庫(Repository)和倉庫註冊伺服器(Registry)是有區別的。倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤(tag)。
-
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
-
最大的公開倉庫是 Docker Hub(https://hub.docker.com/),存放了數量龐大的映象供使用者下載。
-
國內的公開倉庫包括阿里雲 、網易雲 等
小結
需要正確的理解倉儲/映象/容器這幾個概念 :
-
Docker 本身是一個容器執行載體或稱之為管理引擎。我們把應用程式和配置依賴打包好形成一個可交付的執行環境,這個打包好的執行環境就是image映象檔案。只有通過這個映象檔案才能生成 Docker 容器。image 檔案可以看作是容器的模板。Docker 根據 image 檔案生成容器的例項。同一個 image 檔案,可以生成多個同時執行的容器例項。
-
image 檔案生成的容器例項,本身也是一個檔案,稱為映象檔案。
-
一個容器執行一種服務,當我們需要的時候,就可以通過docker客戶端建立一個對應的執行例項,也就是我們的容器
-
至於倉庫,就是放了一堆映象的地方,我們可以把映象釋出到倉庫中,需要的時候從倉庫中拉下來就可以了。
環境說明
我們使用的是 CentOS 7 (64-bit)
目前,CentOS 僅發行版本中的核心支援 Docker。
Docker 執行在 CentOS 7 上,要求系統為64位、系統核心版本為 3.10 以上。
檢視自己的核心:
uname -r
命令用於列印當前系統相關資訊(核心版本號、硬體架構、主機名稱和作業系統型別等)。
[root@master ~]# uname -r
3.10.0-1160.el7.x86_64
檢視版本資訊:
cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
安裝步驟
1、官網安裝參考手冊:https://docs.docker.com/engine/install/centos/
2、確定你是CentOS7及以上版本,我們已經做過了
3、yum安裝gcc相關環境(需要確保 虛擬機器可以上外網 )
yum -y install gcc
yum -y install gcc-c++
4、解除安裝舊版本
沒有安裝過的話無需執行此操作
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5、安裝需要的軟體包
yum install -y yum-utils
6、設定映象倉庫
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意:執行上面的語句可能出現如下的報錯
這可能是讀者升級了python3,並且修改了python的連結,解決辦法,vim /usr/bin/yum-config-manager
,第一行改為#!/usr/bin/python2 -tt
7、更新yum軟體包索引
yum makecache fast
8、安裝 Docker CE
yum install docker-ce docker-ce-cli containerd.io
9、啟動 Docker
systemctl start docker
10、測試命令
docker version
docker run hello-world
docker images
11、解除安裝
systemctl stop docker
yum -y remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
底層原理
1、啟動hello-world
docker run hello-world
2、run幹了什麼?
Docker是怎麼工作的
Docker是一個Client-Server結構的系統,Docker守護程序執行在主機上, 然後通過Socket連線從客戶端訪問,守護程序從客戶端接受命令並管理執行在主機上的容器。 容器,是一個執行時環境,就是我們前面說到的集裝箱。
為什麼Docker比較 VM 快
1、docker有著比虛擬機器更少的抽象層。由亍docker不需要Hypervisor實現硬體資源虛擬化,執行在docker容器上的程式直接使用的都是實際物理機的硬體資源。因此在CPU、記憶體利用率上docker將會在
效率上有明顯優勢。
2、docker利用的是宿主機的核心,而不需要Guest OS。因此,當新建一個容器時,docker不需要和虛擬機器一樣重新載入一個作業系統核心。仍而避免引尋、載入作業系統核心返個比較費時費資源的過程,當新建一個虛擬機器時,虛擬機器軟體需要載入Guest OS,返個新建過程是分鐘級別的。而docker由於直接利用宿主機的作業系統,則省略了返個過程,因此新建一個docker容器只需要幾秒鐘。