Docker 前沿概述

c旋兒發表於2019-08-13

Docker 前沿概述

什麼是Docker?

Docker是基於Go語言實現的開源容器專案。Docker是一個為開發者和系統管理員提供的開發,部署和執行的容器應用程式。Linux使用容器開發應用程式的這種方式稱為容器化。Docker專案已加入Linux基金會,並遵循Apache2.0 協議,全部開原始碼再http://github.com/docker 專案倉庫進行維護。

Docker的基本概念

Docker中包括三個基本概念:容器(Container)、映象(Image)、倉庫(Repository)

容器(Container) -- 映象執行時的實體

先來看看容器較為官方的解釋:容器就是將軟體打包成基本單元,用來開發、交付和部署。

  • 容器映象是輕量的、可執行的軟體包 ,包含軟體執行所需的所有內容:程式碼、執行時環境、系統工具、系統庫和設定。
  • 容器化軟體是基於Linux和Windows的應用,在任何環境中都能夠始終如一地執行。
  • 容器賦予了軟體獨立性,使其免受外在環境差異(例如,開發和預演環境的差異)的影響,從而有助於減少團隊間在相同環境上執行不同軟體時的衝突。

映象(Image) -- 一個特殊的檔案系統

Docker中的Image映象相當於是一個檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數。

映象可以基於Dockerfile構建,Dockerfile是一個描述檔案,裡面包含若干條命令,每條命令都會對基礎檔案系統建立新的層次結構。

使用者可以通過編寫Dockerfile建立新的映象,也可以直接從類似github的Docker Hub上下載映象使用。

倉庫(Repository) -- 集中存放映象檔案的地方

如果你使用過 gitgithub 就很容易理解Docker的倉庫概念。Docker倉庫相當於一個 github 上的程式碼庫。

Docker 倉庫是用來包含映象的位置,Docker提供一個註冊伺服器(Registry)來儲存多個倉庫,每個倉庫又可以包含多個映象。

它們的範圍大小依次是 倉庫 > 映象 > 容器

下面再來說說虛擬機器

前面說到,容器在Linux上本機執行,並與其他容器共享主機的核心。它執行一個獨立的程式,不佔用任何其他可執行檔案的記憶體,使其輕量級。

相比之下,虛擬機器執行一個完整的客戶作業系統,通過虛擬機器管理程式對主機資源進行虛擬訪問。通常,VM提供的環境比大多數應用程式需要的資源更多。

下面這幅圖很好的表述了這一點

Docker 前沿概述

容器和虛擬機器的比較

這或許也就能解釋 Docker 如此流行的原因

  • Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機器方式(數分鐘)要快得多;
  • Docker容器對系統資源需求很少,一臺主機可以執行數千個Docker容器;
  • Docker通過類似Git設計理念的操作來方便使用者獲取、分發和更新應用映象,儲存複用,增量更新;
  • Docker通過Dockerfile支援靈活的自動化創新和部署機制,以提高工作效率,並標準化流程。

下圖是Docker容器技術與傳統虛擬機器技術的比較:

特性 容器 虛擬機器
啟動速度 秒級 分鐘級
效能 接近原生 較弱
記憶體代價 很小 較多
硬碟使用 一般為MB 一般為GB
執行密度 單機支援上千個容器 一般為幾十個
隔離性 安全隔離 完全隔離
遷移性 優秀 一般

Docker 解決了什麼樣的問題

一項技術或者軟體的流行都是為了解決某種問題應用而生的,那麼話說回來了,Docker解決了什麼問題呢?

  • 組織有序:如果沒有Docker,一臺機器就可能像是一個裝滿垃圾的抽屜,應用程式依賴各種資源,一些應用程式依賴各種程式碼庫,語音,影象等。這種依賴關係很像分散式各個系統的呼叫網一樣混亂不堪,如果用一張圖來表示一下,就像是下面這樣

Docker 前沿概述

但是Docker解決了這個問題,應用程式的各種依賴和環境都直接部署在Docker的容器中,起到隔離一切的目 的,就像是下圖所示的這樣

Docker 前沿概述

  • 提高可移植性:另一個軟體的問題是,應用程式的依賴不僅只是資源的依賴,還有可能是系統環境的依賴,作業系統之間的移植性一直是軟體使用者的一個主要問題。雖然Linux和OS X之間可能會有某種相容性,但是在Windows環境下開發的軟體移植到Linux會很困難。

    Docker解決了這一點,因為Docker可執行在原生的Linux環境下,在OS X和Windows環境中通過單獨的虛擬機器也可以執行。

    這種新的移植性在幾個方面有助於使用者使用:第一,它將軟體以前無法使用的地方徹底解鎖。第二,它可以在任何系統上執行相同的軟體。第三,軟體維護人員可以集中精力在單一平臺和一套依賴關係中編寫他們的軟體,這節省了大量的時間。

  • 保護你的機器:Docker就像是物理的牢房,容器裡的任何東西只能訪問它內部的東西。容器限制了一個程式對其他程式帶來的影響範圍、可訪問的資料和系統資源的影響範圍。下圖說明了容器內部執行和外部執行軟體的區別

Docker 前沿概述

下面就開始你的Docker搭建之旅吧!!!

準備你的docker環境

我為你準備了下面四種環境的docker安裝教程,你可以根據教程來實現安裝

Ununtu Docker安裝https://www.runoob.com/docker/ubuntu-docker-install.html

CentOS Docker安裝https://www.runoob.com/docker/centos-docker-install.html

Windows Docker安裝https://www.runoob.com/docker/windows-docker-install.html

MacOS Docker安裝https://www.runoob.com/docker/macos-docker-install.html

測試Docker 版本

  1. 安裝完成後,執行docker --version 確保你的系統已經支援了docker

Docker 前沿概述

  1. 執行docker info(沒有 - )以檢視有關Docker安裝的更多詳細資訊:

Docker 前沿概述

等等

測試Docker 安裝

  1. 測試你的安裝工作通過執行一個簡單的docker 映像,hello-world:

Docker 前沿概述

  1. 列出來你機器上下載的hello-world 映像

Docker 前沿概述

  1. 列出顯示其訊息後退出的hello-world容器(由影象生成)。如果它仍在執行,則不需要--all選項:

Docker 前沿概述

回顧和備忘單

列出Docker CLI 命令

docker
docker container --help

顯示docker version 和 info

docker --version
docker version
docker info

執行docker影象

docker run hello-world

列出docker 映像

docker image ls

列出docker容器

docker container ls
docker container ls --all
docker container ls -aq

公眾號提供 優質Java資料 以及CSDN免費下載 許可權,歡迎你關注我
Docker 前沿概述

參考:

http://dockone.io/article/6051

DOCKER 概念及基本用法

《Docker實戰》