iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
2

前言

明天我將會介紹如何在 VM 上用 Docker 建立 Tensorflow 開發環境。
為了明天能夠順利的設定 Docker,今天我們先來簡單認識一下,什麼是 Docker?

Docker 介紹

名詞介紹

Docker 這個詞,同時意指:

  • Docker Project
  • Docker Engine

而 Docker Engine 又分為:

  • Docker daemons
  • Docker (commands)

顯而易見的,Docker daemons 就像 Server 一樣,負責接收 Client commands 的指令,並完成 Docker 相關任務。

除此之外,Docker 也擁有類似 GitHub 的網站服務:Docker registry,可用於儲存 Docker 相關資料。

底層實現

我們前面有介紹過 LXC,而 Docker 則可以想像成 LXC 的管理工具。
Docker 跟 PVE 一樣都是虛擬化技術 High Level 的管理工具,也同樣利用 LibVirt 這套工具來操作 LXC,使我們不用接觸到許多底層的東西,也能妥善利用虛擬化技術。

所以其層級由底層到上是:
LXC -> LibVirt -> Docker

抽象方式

不過,對我們來說最重要的還是如何管理與使用 Docker。
在 Docker 內,為了管理容器,他將其抽象為以下幾個概念:

  • Images:想像成 OOP 中的 Class
  • Containers:想像成 OOP 中的 Object Instance

所以我們可以不斷用 Override 的想法,以 Layer 的方式疊床架屋 Images。
接著以該 Images,實例化出我們真的能用的 Containers。

並利用這兩個方式來管理設定之:

  • Dockerfile:裡描述了 Images 的生成方式(就像是 Class 的 Code)。
  • Docker Compose:包含實例化一或多個 Containers 時的參數,可以看做批次設定檔。(init 時要傳入的參數)

結語

所以,如果我們今天想在 PVE 內安裝一台 VM ,並在其中使用 Docker,根據這二十天來的知識,會變成以下這個結構。(由底層向上)
KVM -> QEMU -> LibVirt -> PVE -> LXC -> LibVirt -> Docker


上一篇
Day25:BGP IP 位置經驗
下一篇
Day27:Docker in VM on PVE
系列文
在家機器學習?用虛擬化技術實現個人 AI 環境配置30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言