(在家觀看 = 0%,在校觀看 = 100%)
100% 在校觀看日期及時間:
自由選擇,點選以下地區觀看辦公時間及位置
課時: 12 小時
享用時期: 報讀日至 4 星期內,進度由您控制,可快可慢。
課堂錄影導師:Franco
在校免費試睇:首 1 小時,請致電以上地點與本中心職員預約。
本課程提供在校免費重睇及導師解答服務。
(在家觀看 = 100%,在校觀看 = 0%)
100% 在家觀看日期及時間:
每天 24 小時全天候不限次數地觀看
學費:$1,480 報名 phone
電話:2332-6544
課時: 12 小時
享用時期: 報讀日至 4 星期內,進度由您控制,可快可慢。
課堂錄影導師:Franco
在校免費試睇:首 1 小時,請致電以上地點與本中心職員預約。
本課程提供導師解答服務。
使用 Docker 有甚麼好處?
Docker 是一個軟體容器的開放原始碼軟件,軟體容器有點似 Virtual Machines,可以在獨立隔離的環境下執行程式,但軟體容器不像 Virtual Machines 般需要使用 Hypervisors。軟體容器是一個高效、輕便、獨立的系統。Container 技術是現時其中一項流行的技術,各大雲端平台均支持 Docker 技術。
- Docker 可以像 Virtual Machines 般在獨立隔離的環境下執行程式。
- Docker 映像檔設計獨特,令我們可以方便打包及部署應用程式。
- Docker 映像檔可移性高,這表示我們可以透過交換映像檔以確保程式在不同的環境中都可以正確執行出來。而如果只是交付程式碼的話就有可能因為測試環境和生產環境不同而需要費時處理當中的問題。
- 在 Docker Hub (https://hub.docker.com/explore/)上已經有大量現成的映像檔 (Images) 可供免費下載使用,常中包括常用的 Ubuntu, CentOS, Apache HTTP Server, MySQL, WordPress 等等。令我們可以使用數個指令就可以 “裝好及使用” Ubuntu, WordPress 等,可謂方便、簡單、標準。 以後安裝 WordPress 就不再需要 install web servers、install databases 等,直接使用 Docker Hub 上下載映像檔 (Images) 及稍為設定一下便可以使用。
本課程旨在有系統及有效率地教授各項 Docker 的功能及實踐所需的相關技術。課程主要分三個部份。
第一部份:會透過一系列的實習體會 Docker 技術所帶來的簡單、方便、標準等的好處,過程中會觸及Docker 不同的技術,但不會過份細膩教授當中的細節,目標是對 Docker 有一個概觀。
第二部份:將會細膩教授和實踐 Docker 各種技術,如 Images、Dockerfile、data persistence and sharing、containers、container networking and name resolution mechanisms、register servers、services 等,這部份完結後,同學能夠更靈活和準確地實踐 Docker 技術。
第三部份:導師將會示範如何使用 Docker 架設不同的系統、資料庫等,以實戰的角度學習 Docker。例如導師會在課堂上示範如果使用數句指令就能架設以下的伺服器。相信以下已經涵蓋一般工作所需要用到的伺服器。
- Ubuntu: 並會在 Ubuntu 內安裝軟件。
- CentOS: 並會在 CentOS 內安裝軟件。
- Nginx: 並會在 Nginx 內的 Web Server 放置網頁,架設能夠投產使用的 web server。
- Apache + PHP + MySQL + phpMyAdmin: 並會示範透過 PHP 接駁 MySQL、使用 phpMyAdmin 接駁 MySQL、在 Docker 環境下安裝 PHP extensions 等。
- Java, Standard Edition (SE): 並會示範編譯和執行 Java 程式。
- Java, Enterprise Edition (EE) [JSP / Servlet]: 並會示範設定 Apache Tomcat 伺服器和上載 WAR (Web application ARchive) 檔。
- Python: 並會示範執行 python 程式以計算 permutations。
- Node.js + MongoDB (Document database / NoSQL): 並會示範透過 Node.js 接駁 MongoDB 及簡介相關技術。
- Node.js + Redis (In-memory data structure store): 並會示範透過 Node.js 接駁 Redis 及簡介相關技術。
- WordPress + MariaDB + phpMyAdmin: 並會示範簡單地建立網站及使用 phpMyAdmin 查看 MariaDB 資料庫內的值。
- Neo4j (Graph database): 並會示範在 Neo4j browser 內觀看預設的 movie graph,並執行預設所供的 Cypher queries。
- odoo (前稱 OpenERP) + PostgreSQL: 並會瀏覽 oodo 內的各種元件。
課程名稱: |
Docker 軟體容器 (Containers) 虛擬化課程 - 簡稱:Docker Training Course |
課程時數: | 12 小時 (共 4 堂) |
適合人士: | 對 Docker Container 技術有興趣的人士 |
授課語言: | 以廣東話為主,輔以英語 |
課程筆記: | 本中心導師親自編寫中文為主筆記,而部份中文字附有英文對照。 |
課程名稱:Docker 軟體容器 (Containers) 虛擬化課程 - 簡稱:Docker Training Course |
會透過一系列的實習體會 Docker 技術所帶來的簡單、方便、標準等的好處,過程中會觸及 Docker 不同的技術,但不會過份細膩教授當中的細節,目標是對 Docker 有一個概觀。
- 安裝 Docker
- 取得 Images
- 產生 Containers
- 執行 Containers
- Port mappings
- 狀態檢查
- 進入 Containers
- 停止 Containers
- 還原
第二部份:
將會細膩教授和實踐 Docker 各種技術,如 Images、Dockerfile、data persistence and sharing、containers、container networking and name resolution mechanisms、register servers、services等,這部份完結後,同學能夠更靈活和準確地實踐 Docker 技術。
- 可以隔離的部份
- data persistence and sharing
- 將檔案從 Containers 複製到本機檔案系統
- 將檔案從本機檔案系統複製到 Containers
- Volumes
- Read-only volume
- 連結本機檔案系統
- 數個 Containers 共用的 volumes
- Images
- 搜尋 Images
- 取得 Images、精準地取得指定版本的 Images
- Images → Containers
- Containers → Images / Customized Images
- Export images
- Import images
- Dockerfile 及相關的參數
- Dockerfile → Images / Customized Images
- Containers
- 建立而不運行的 Containers
- 建立而運行的 Containers
- 建立 “即用即棄” 的 Containers
- A container is a single process?
- 取得 Container 的詳細資料
- Export Containers
- 取得 “logs”
- 進入 Containers 並安裝軟件
- Container networking
- docker0
- default bridge
- default bridge 的限制
- 如何 “分配” IP addresses
- Container 上網
- Container LAN cards
- 新增 bridge / 刪除 bridge
- 將 Containers 連接到不同的 bridges 內
- 將 Containers 同時連接到不同的 bridges 內
- Routing and switching in docker environment
- Name resolutions in docker environment
- Port mappings
- “--link” (legacy),根據 Docker 的文件顯示, “The --link flag is a deprecated legacy feature of Docker. It may eventually be removed.” 但由於仍有不少地方仍使用 “--link”,所以仍會教授和實戰這 option,導師亦會在課堂上教授和實戰另一些較好的做法。
- Local Registry
- Local Registry 的作用和角式
- 建立 Local Registry
- push and pull
- Services
- docker-compose
- docker-compose.yml及相關的參數
- 執行 docker-compose
第三部份
導師將會示範如何使用 Docker 架設不同的系統、資料庫等,以實戰的角度學習 Docker。例如導師會在課堂上示範如果使用數句指令就能架設以下的伺服器。相信以下已經涵蓋一般工作所需要用到的伺服器。
- Ubuntu: 並會在 Ubuntu 內安裝軟件。
- CentOS: 並會在 CentOS 內安裝軟件。
- Nginx: 並會在 Nginx 內的 Web Server 放置網頁,架設能夠投產使用的 web server。
- Apache + PHP + MySQL + phpMyAdmin: 並會示範透過 PHP 接駁 MySQL、使用 phpMyAdmin 接駁 MySQL、在 Docker 環境下安裝 PHP extensions 等。
- Java, Standard Edition (SE): 並會示範編譯和執行 Java 程式。
- Java, Enterprise Edition (EE) [JSP / Servlet]: 並會示範設定 Apache Tomcat 伺服器和上載 WAR (Web application ARchive) 檔。
- Python: 並會示範執行 python 程式以計算 permutations。
- Node.js + MongoDB (Document database / NoSQL): 並會示範透過 Node.js 接駁 MongoDB 及簡介相關技術。
- Node.js + Redis (In-memory data structure store): 並會示範透過 Node.js 接駁 Redis 及簡介相關技術。
- WordPress + MariaDB + phpMyAdmin: 並會示範簡單地建立網站及使用 phpMyAdmin 查看 MariaDB 資料庫內的值。
- Neo4j (Graph database): 並會示範在 Neo4j browser 內觀看預設的 movie graph,並執行預設所供的 Cypher queries。
- odoo (前稱 OpenERP) + PostgreSQL: 並會瀏覽 oodo 內的各種元件。
1 Container 技術與 Docker
1.1 Container 技術
1.2 Container vs Virtual Machine (VM)
1.3 Container 與 Docker
1.4 伺服器的選擇
1.5 Docker 理念
1.6 使用 Docker 的好處
2 安裝 Docker
2.1 在Linux 安裝 Docker
2.1.1 安裝 Linux (Ubuntu)
2.1.2 在 Ubuntu安裝 Docker
2.1.2.1 安裝 Docker
2.1.2.2 關於權限與 sudo 的問題
2.1.2.2.1 sudo
2.1.2.2.2 docker 群組
2.1.3 其他 Linux distributions (CentOS, Fedora 和 Debian) 的情況
2.1.3.1 CentOS
2.1.3.2 Fedora
2.1.3.3 Debian
2.2 在 Windows Server 2019 安裝 Docker
3 體會 Docker 技術
3.1 情景
3.2 取得和檢視 images
3.2.1 取得images
3.2.1.1 預設的 registry 和 protocol
3.2.1.2 custom registry
3.2.1.3 所有版本
3.2.1.4 中途放棄
3.2.2 檢視 images
3.3 建立及啟動 containers
3.3.1 Detached vs foreground
3.3.1.1 Detached
3.3.1.2 Foreground
3.3.2 EXPOSE (incoming ports)
3.4 檢視運作中的 containers
3.5 測試
3.5.1 網絡拓撲圖 (Network topology diagram)
3.5.2 進行測試
3.6 進入 container
3.7 檢視 container 的 Linux distribution
3.8 檢視伺服器設定檔案
3.9 安裝軟件以修改設定檔案
3.10 離開 containers
3.11 停止及刪除 containers
3.12 刪除 images
4 各項 Docker 的元件及技術
4.1 資料分享 (hosts → containers / containers → hosts)
4.1.1 事前準備
4.1.1.1 停止所有 containers
4.1.1.2 刪除所有 containers
4.1.1.3 刪除所有 images
4.1.1.4 取得images 及 containers
4.1.2 複製資料夾及檔案
4.1.2.1 hosts → containers
4.1.2.1.1 hosts → containers:檔案
4.1.2.1.2 hosts → containers:資料夾
4.1.2.2 containers → hosts
4.1.2.2.1 containers → hosts:檔案
4.1.2.2.2 containers → hosts:資料夾
4.1.3 Bind mounts / host mounts (containers ↔ hosts)
4.1.3.1 Bind mounts / host mounts (containers ↔ hosts) :檔案
4.1.3.2 Bind mounts / host mounts (containers ↔ hosts) :資料夾
4.1.3.3 產生問題的做法
4.1.4 Volumes
4.1.4.1 Volumes 的好處 (相比 bind mounts)
4.1.4.2 新增 Volume
4.1.4.3 檢視 Volume
4.1.4.4 建立與啟動一個使用 volume 的 container
4.1.4.5 在 Volume 內新增檔案
4.1.4.6 檢視 volume 內新增檔案
4.1.4.7 新增更多 containers 並以 read-only 形式共同 volume (read-only volume)
4.1.4.8 嘗試修改 read-only volume 內的內容
4.1.4.9 測試及驗證
4.1.4.10 備份 volume (backup)
4.1.4.11 復原 volume 的內容 (restore)
4.1.4.12 事後還原
4.1.4.13 刪除 volumes
4.2 Images (映像檔)
4.2.1 事前準備
4.2.2 搜尋 images (映像檔)
4.2.3 取得 images (映像檔)
4.2.3.1 取得 latest images (映像檔)
4.2.3.2 取得特定標籤 / 版本 images (映像檔)
4.2.4 取得 images (映像檔)、進行設定並產生新的 images (映像檔)
4.2.5 輸出 (“export”) images (映像檔)
4.2.6 輸入 (“import”) images (映像檔)
4.2.7 Dockerfile
4.2.7.1 Dockerfile instructions
4.2.7.1.1 ARG
4.2.7.1.2 FROM
4.2.7.1.3 RUN
4.2.7.1.4 CMD
4.2.7.1.5 ENTRYPOINT
4.2.7.1.6 LABEL
4.2.7.1.7 EXPOSE
4.2.7.1.8 ENV
4.2.7.1.9 COPY
4.2.7.1.10 ADD
4.2.7.1.11 VOLUME
4.2.7.1.12 WORKDIR
4.2.7.2 Dockerfile 示範 1 [FROM + ENTRYPOINT]
4.2.7.3 Dockerfile 示範 2 [FROM + CMD]
4.2.7.4 Dockerfile 示範 3 [FROM + ENTRYPOINT + CMD]
4.2.7.5 Dockerfile 示範 4 [FROM + RUN + WORKDIR + COPY + VOLUME]
4.2.7.6 Dockerfile 示範 5 [FROM + RUN + WORKDIR + ADD + VOLUME]
4.3 Containers
4.3.1 建立不運作的 containers
4.3.2 建立並運作 containers
4.3.3 顯示 containers 的詳細資料
4.3.4 停止 containers
4.3.5 啟動 containers
4.3.6 Container Background → foreground 並準備可以由foreground → background
4.3.7 Container Foreground to background
4.3.8 刪除 containers
4.3.9 即用即棄 containers
4.3.10 Auto-restart containers (以 Node.js 示範此特性)
4.3.11 輸出 (“export”) Container 的檔案系統 (file system)
4.3.12 顯示 containers’ logs
4.3.13 了解 container 的資源使用情況 (CPU / Memory 等)
4.4 Docker networking
4.4.1 預設的情況
4.4.1.1 docker0 與 default bridge
4.4.1.1.1 Container 預設如何上網
4.4.1.1.2 檢視 default bridge
4.4.1.1.3 將多個 containers 接駁在 default bridge 上
4.4.1.2 host network
4.4.1.3 none network
4.4.1.4 DNS
4.4.1.4.1 預設的 DNS Servers
4.4.1.4.2 改變 Container 的 DNS Servers
4.4.2 User-defined networks
4.4.2.1 建立新 networks
4.4.2.2 將 containers 接駁到 user-defined networks
4.4.2.3 將 containers 接駁到多個一個 networks
4.4.2.4 將 containers 從 networks 中移除
4.4.2.5 User-defined networks 內的 container name resolution
4.4.2.6 刪除 user-defined networks
4.4.3 --link (legacy)
4.5 刪除無用的 Docker components
4.5.1 一次過刪除無用的 Docker components (包括 images、containers、volumes 和 networks)
4.5.2 刪除無用的 Docker containers
4.5.3 刪除無用的 Docker images
4.5.4 刪除無用的 Docker volumes
4.5.5 刪除無用的 Docker networks
4.6 Docker Compose / Services
4.6.1 安裝 Docker Compose
4.6.2 體驗 Docker Compose
4.6.3 Compose files
4.6.3.1 images
4.6.3.2 build
4.6.3.2.1 context
4.6.3.2.2 dockerfile
4.6.3.3 container_name
4.6.3.4 restart
4.6.3.5 volumes
4.6.3.6 networks
4.6.3.7 environment
4.6.4 自訂 Compose file 並起動 web server cluster
4.6.4.1 建立 Compose file
4.6.4.2 啟動 Services
4.6.5 停止 Services
4.6.6 Prefix 問題及其處理方法
4.6.7 顯示現在 Docker Compose / Service 的狀態
4.7 Registry Server (Local)
4.7.1 安裝Registry Server (Local)
4.7.2 設定及啟動Registry Server (Local)
4.7.3 從 docker hub 下載並上載到 Registry Server (Local)
4.7.4 檢視 Registry Server (Local) 的 images
4.7.5 從 Registry Server (Local) 下載 images
5 實戰 Docker
5.1 Ubuntu
5.2 CentOS
5.3 Nginx
5.4 Apache + PHP + MySQL + phpMyAdmin
5.4.1 建立 user-defined networks
5.4.2 Apache + PHP
5.4.2.1 安裝 extensions (例如接駁 MySQL 的 extensions)
5.4.3 MySQL
5.4.3.1 PHP 接駁 MySQL
5.4.4 phpMyAdmin
5.5 Java SE (Java Platform, Standard Edition)
5.6 Java EE (Java Platform, Enterprise Edition) [JSP / Servlet]
5.7 Python
5.8 Node.js + MongoDB
5.8.1 建立 user-defined networks
5.8.2 MongoDB
5.8.3 Node.js
5.8.4 Node.js 接駁 MongoDB
5.9 Node.js + Redis
5.9.1 建立 user-defined networks
5.9.2 Redis
5.9.3 Node.js
5.9.4 Node.js 接駁 Redis
5.10 WordPress + MariaDB
5.10.1 建立 docker-compose.yml
5.11 Neo4j
5.12 odoo (Open ERP) + Postgre (PostgreSQL)
5.12.1 建立 user-defined networks
5.12.2 Postgre (PostgreSQL)
5.12.3 odoo (Open ERP)
6 其他有趣話題
6.1 在使用中的 containers 加 port mapping
6.2 Reverse proxy by HAProxy (https to http)
6.3 Apache Guacamole