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) -- 集中存放鏡像文件的地方
如果你使用過 git
和 github
就很容易理解Docker的倉庫概念。Docker倉庫相當於一個 github
上的代碼庫。
Docker 倉庫是用來包含鏡像的位置,Docker提供一個注冊服務器(Registry)來保存多個倉庫,每個倉庫又可以包含多個鏡像。
它們的范圍大小依次是 倉庫 > 鏡像 > 容器
下面再來說說虛擬機
前面說到,容器在Linux上本機運行,並與其他容器共享主機的內核。它運行一個獨立的進程,不占用任何其他可執行文件的內存,使其輕量級。
相比之下,虛擬機運行一個完整的客戶操作系統,通過虛擬機管理程序對主機資源進行虛擬訪問。通常,VM提供的環境比大多數應用程序需要的資源更多。
下面這幅圖很好的表述了這一點
容器和虛擬機的比較
這或許也就能解釋 Docker 如此流行的原因
- Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機方式(數分鍾)要快得多;
- Docker容器對系統資源需求很少,一台主機可以運行數千個Docker容器;
- Docker通過類似Git設計理念的操作來方便用戶獲取、分發和更新應用鏡像,存儲復用,增量更新;
- Docker通過Dockerfile支持靈活的自動化創新和部署機制,以提高工作效率,並標准化流程。
下圖是Docker容器技術與傳統虛擬機技術的比較:
特性 | 容器 | 虛擬機 |
---|---|---|
啟動速度 | 秒級 | 分鍾級 |
性能 | 接近原生 | 較弱 |
內存代價 | 很小 | 較多 |
硬盤使用 | 一般為MB | 一般為GB |
運行密度 | 單機支持上千個容器 | 一般為幾十個 |
隔離性 | 安全隔離 | 完全隔離 |
遷移性 | 優秀 | 一般 |
Docker 解決了什么樣的問題
一項技術或者軟件的流行都是為了解決某種問題應用而生的,那么話說回來了,Docker解決了什么問題呢?
- 組織有序:如果沒有Docker,一台機器就可能像是一個裝滿垃圾的抽屜,應用程序依賴各種資源,一些應用程序依賴各種代碼庫,語音,圖像等。這種依賴關系很像分布式各個系統的調用網一樣混亂不堪,如果用一張圖來表示一下,就像是下面這樣
但是Docker解決了這個問題,應用程序的各種依賴和環境都直接部署在Docker的容器中,起到隔離一切的目 的,就像是下圖所示的這樣
-
提高可移植性:另一個軟件的問題是,應用程序的依賴不僅只是資源的依賴,還有可能是系統環境的依賴,操作系統之間的移植性一直是軟件用戶的一個主要問題。雖然Linux和OS X之間可能會有某種兼容性,但是在Windows環境下開發的軟件移植到Linux會很困難。
Docker解決了這一點,因為Docker可運行在原生的Linux環境下,在OS X和Windows環境中通過單獨的虛擬機也可以運行。
這種新的移植性在幾個方面有助於用戶使用:第一,它將軟件以前無法使用的地方徹底解鎖。第二,它可以在任何系統上運行相同的軟件。第三,軟件維護人員可以集中精力在單一平台和一套依賴關系中編寫他們的軟件,這節省了大量的時間。
-
保護你的機器: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 版本
- 安裝完成后,運行
docker --version
確保你的系統已經支持了docker
- 運行
docker info
(沒有 - )以查看有關Docker安裝的更多詳細信息:
等等
測試Docker 安裝
- 測試你的安裝工作通過運行一個簡單的docker 映像,hello-world:
- 列出來你機器上下載的hello-world 映像
- 列出顯示其消息后退出的hello-world容器(由圖像生成)。如果它仍在運行,則不需要--all選項:
回顧和備忘單
列出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免費下載 權限,歡迎你關注我
參考:
http://dockone.io/article/6051
DOCKER 概念及基本用法
《Docker實戰》