1. 程式人生 > >【Docker】Docker學習筆記(一)Docker基礎

【Docker】Docker學習筆記(一)Docker基礎

1 Docker簡介

  • 開發語言:Go
  • 性質:作業系統層面的虛擬化技術
  • Docker 和傳統虛擬化方式的區別:
    • 傳統虛擬機器技術是虛擬出一套硬體後,在其上執行一個完整作業系統,在該系統上再執行所需應用程序
    • 容器內的應用程序直接運行於宿主的核心,容器內沒有自己的核心,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機器更為輕便

Docker

圖1-1 Docker與虛擬機器的區別
  • Docker的優點:
    • 更高效的利用系統資源
    • 更快速的啟動時間
    • 一致的執行環境
    • 持續交付和部署
    • 更輕鬆的遷移
    • 更輕鬆的維護和擴充套件

2 Docker基本概念

2.1 映象|Image

  Docker 映象是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。

2.2 容器|Container

容器:對程序進行封裝隔離,且隔離的程序獨立於宿主和其它的隔離的程序
容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。

  容器的實質是程序,但與直接在宿主執行的程序不同,容器程序運行於屬於自己的獨立的名稱空間。因此容器可以擁有自己的 root 檔案系統、自己的網路配置、自己的程序空間,甚至自己的使用者ID空間。容器內的程序是執行在一個隔離的環境裡,使用起來,就好像是在一個獨立於宿主的系統下操作一樣

2.3 倉庫|Repository

  • Docker Registry:一個集中的儲存、分發映象的服務,一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標籤(Tag);每個標籤對應一個映象。
    • 一個倉庫會包含同一個軟體不同版本的映象,而標籤就常用於對應該軟體的各個版本。我們可以通過 <倉庫名>:<標籤> 的格式來指定具體是這個軟體哪個版本的映象。如果不給出標籤,將以 latest 作為預設標籤。
    • 倉庫名經常以兩段式路徑形式出現,比如 jwilder/nginx-proxy,前者往往意味著 Docker Registry 多使用者環境下的使用者名稱,後者則往往是對應的軟體名。

3 安裝Docker

3.1 Ubuntu

  • 注意:Ubuntu版本必須高於16.04,否則需要安裝儲存層驅動,用來支援docker的分層儲存機制。
  • 安裝步驟:
    • sudo apt-get update
    • sudo apt-get install apt-transport-https ca certificates curl software-properties-common
    • curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    • sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \$(lsb_release -cs) stable"
  • 安裝Docker CE:
    • sudo apt-get update
  • 建立Docker使用者組
    • sudo groupadd docker
    • sudo usermod -a -G docker $USER
    • 重啟(重啟Terminal沒用,需要重系統)
  • 啟動Docker CE:
    • sudo systemctl enable docker
    • sudo systemctl start docker
  • 測試
    • docker run hello-world
  • 配置倉庫的國內映象,也叫加速器:
    • 在 /etc/docker/daemon.json 中寫入如下內容(如果檔案不存在請新建該檔案)
    • sudo systemctl daemon-reload
    • sudo systemctl restart docker
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}