iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 2
6

在使用 Docker 之前需要先簡單的了解一些基本的概念,這樣會比較容易上手。

今天就來介紹 Docker的底層實作技術、Docker的系統架構、一些常看到的名詞,這幾個部份。

一. Docker 底層實作技術
Docker 的底層是使用 Linux Kernel的 Namespace 和 Cgroup 組合而成的。因此在安裝 Docker 之前要先確認 Linux Kernel的版本是否有支援被 Docker 使用。以下就分別來簡單介紹 Namespace 和 Cgroup

  1. Namespace:用來做環境隔離使用的,像是把Process ID、User ID、Network…等等的環境執行狀態隔離開來。舉個例子來說在一台實體機器上,有 2個 Namespace,Namespace 1 和 Namepsace2。Namespace 1 裡面的 PID 有 1,Namespace 2的PID 也可以有 1 的 PID,這樣就做到執行環境上PID 的隔離。如下圖:
    https://ithelp.ithome.com.tw/upload/images/20171205/20103456ApLF6SQff3.png

  2. Cgroup:用來做系統資源的管理,如:CPU、Memory、I/O…等等,資源做有效的隔離和做使用上的限制。

有了 Namespace 和 Cgroup 後,就可以做到在同一個 Kernel的系統環境下,有效的隔離資源的使用。

二. Docker 系統架構
Docker 的系統的架構主要是 Client-Server 的架構,Client 的部份稱為 Docker Client,然後 Server 的部份稱為 Docker Daemon,介紹如下:

  1. Docker Daemon:用來執行管理 Docker image、啟動 container、停止 container 的 service,它是一個 long time service。並且有提供 Restful API 給使用者做操作或是顯示一些 Docker container 的狀態訊息。在 Docker 1.11 之後將 Docker Daemo 的元件拆分為 containerd、docker-containerd-shim、docker-runc… 等等的元件。因為這有點的複雜,所以對 Docker 底層想要再做進一步研究的人,可以上網查詢這些元件的關鍵字。

  2. Docker Client: 使用 Restful API 連到 Docker daemon,並且提供 command line 的方式讓使用者可以操作 docker。

三. 使用 Docker常看到的名詞介紹

  1. Docker image:
    它是 Docker 的映像檔主要是一個唯讀的檔案,是啟動 Docker container 要使用到的檔案。另外 Docker 的 image 可以像是堆積木一樣,一層一層的把 Docker image 堆起來。如下圖:
    https://ithelp.ithome.com.tw/upload/images/20171205/20103456jl9BuRvKSl.png

上圖是一個 Docker image 堆積出來大概的示意圖,在寫 Dockerfile 時會比較有感覺。

Docker Image 要從哪裡來?

  • 從網路上的 Docker Hub pull下來
  • 從另外一台電腦上的 Docker image export 出來,然後在 import 到自已的電腦
  • 自行撰寫 Dockerfile
  1. Docker Container:
    Docker Container 是透過 Docker image 執行起來的 Process,同一個 Docker image 可以啟動多個 Docker Container。

Docker container 和 Docker container 之間的環境是隔離開離來的,不會發生 container1 開 8080 的 port,container2 開 8080 的 port 有衝到的問題。

  1. Docker Hub:
    Docker Hub 可以把它想像成 GitHub,GitHub是用來存放程式碼的倉庫,Docker Hub是來存放 Docker image的倉庫。

可以使用網路上公開的 Docker Hub,或是在自已的內部環境下架設一個私有的Docker Hub 又被稱為 Docker Registry。

以上介紹到 Docker image、Docker Container、Docker Hub 在未來 30 天都會看到。


上一篇
Day 1 介紹為何要使用 Docker
下一篇
Day3: 如何安裝和啟動 Docker
系列文
用30天來介紹和使用 Docker30

尚未有邦友留言

立即登入留言