1. 程式人生 > >Docker入門教學
課程導讀

你好,歡迎你開啟這本《Docker 基礎教程》。 本教程的目的是幫助讀者們快速且無痛地上手 Docker 。

Docker 簡介

Docker 專案誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案,基於 Google 公司推出的 Go 語言實現。 專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,專案程式碼在 GitHub 上進行維護。

CentOS8 作業系統安裝 Docker

因為有的同學可能會選擇其他的 Linux 的發行版來學習本課程,所以這節課我們也列舉了如何在 Ubuntu 下安裝 Docker 的方法。對於初次接觸 Linux 的使用者,我們會提供儘可能詳細的註釋來告知每個命令的作用,放鬆心態

容器技術概念詳解

在前面的章節裡,我們安裝了 Linux,也安裝了 Docker,接下來是不是該上手 Docker 的使用了呢?

容器核心技術--Namespace

上文提到,容器技術的核心有兩個:Namespace 和 Cgroup。本節先來介紹 Namespace 是什麼。

容器核心技術--CGroup

接上一個小節,我們來試想這樣一個場景: 一臺宿主機的容器中運行了一個監控服務,但監控服務佔用了宿主機全部的 CPU 和記憶體等資源,導致宿主機上的其他服務和容器都被卡死,無法正常執行。

rootfs 與容器技術

回到我們在 Linux 的環境,執行我們的“容器”: /root/test/container 我們是不是可以像虛擬機器中的作業系統一樣,在容器中“為非作歹”了呢?

UnionFS 與 Docker

我們自己在上一節留下了不少問題,在自制 rootfs 有很多不完善的地方,在 Docker 產品的方面,就對這些部分進行了補足, 解決的方案,基本都是圍繞 UnionFS (聯合檔案系統)展開的,本節我們會講講 UnionFS 和它在

Docker 有哪些優點?

前面的小節我們學習了一些前置知識和 Docker 的基本原理,那麼,你可能會問了:Docker 到底有哪些優點呢?我們為什麼要學習 Docker 呢?彆著急,這節課我們就來細數下 Docker 的優點:

Docker 映象倉庫

這節介紹映象倉庫的使用。目前 Docker 官方維護了一個公共倉庫 Docker Hub,大部分需求都可以通過在 Docker Hub 中直接下載映象來實現:

使用 Docker 容器

上一節中,我們學會了如何從Docker Hub官方倉庫中獲取映象。同時,我們已經知道,Docker映象是靜態的,要使用它,就是以映象為模板,建立並執行Docker容器應用。

基於已有容器構建 Docker 映象

通過前面的介紹,我們知道了Docker 映象是多個基於 UnionFS 的映象層依次掛載的結果,而容器的檔案系統則是在以只讀方式掛載映象後增加的一個可讀可寫的檔案系統複合而成。

Docker 網路- bridge 模式

容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。

Docker 網路 - host 模式

容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。

Docker 網路-container 模式

容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。

Docker 網路 - none 模式

容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。

Docker 資料管理 - 掛載目錄或檔案

通過前面小節的學習我們知道:使用Docker時,產生的資料預設是儲存到容器的UnionFS的讀寫層中的。那麼,我們不妨思考下這兩個問題:

Docker 資料管理 - 資料卷

我們知道,Docker 提供了兩類資料管理的方式: 掛載宿主機目錄或檔案; 使用資料卷;

使用 Docker 部署執行常用服務

經過上面幾節的積累,我們對 Docker 各個方面都有了大致的瞭解,這一節,我們將常用的 Redis,Nginx, Mysql 等服務部署到 Docker 上來。

Docker容器跨主機通訊

之前的章節中,所有有關資料通訊的部分,都是在單一宿主機上,如果不同的容器部署在不同的宿主機,他們之間該如何通訊呢?

初識 Dockerfile

之前我們學到如何從一個容器生成映象,本節我們學習如何使用 Dockerfile 從頭自定義構建映象。

Dockerfile 指令詳解

在上一節的 Dockerfile 例子中,我們用到了幾個指令,比如:FROM, MAINTAINER,RUN,EXPOSE等等,Dockerfile 構建映象需要用到的指令當然不止這些,下面是我們將介紹常用的構建指令 。

Dockerfile多階段構建映象

之前學習部署 Docker 應用時,我們搭建過一個 redis 服務,然後編寫並運行了一個統計訪問次數的 flask 應用。

初識 DockerCompose

1. 為什麼要用docker compose 在多階段構建章節中,我們將flask應用打包成了映象myhello,然後建立myhello應用容器,它依賴redis服務,所以我們設定myhello容器通過宿主機網路與redis進行資料交換。

DockerCompose指令詳解

上一節我們快速體驗了 Docker Compose,本節我們來學習如何編寫和使用 Docker Compose。

首頁 下頁