首頁 > tools > VMware > > 正文

Docker使用——Docker與VM的區別

點擊:

Docker有著小巧、遷移部署快速、運行高效等特點,但隔離性比服務器虛擬化差。服務器虛擬化其擁有完全獨立(隔離)的空間,屬于不同的客戶(虛擬機所有者

引自:http://zhenhua-lee.github.io/container/docker.html

Docker與VM的區別

VM在物理機的操作系統上建立了一個中間軟件層 hypervisor,利用物理機資源,虛擬出多個硬件資源,這些新的虛擬硬件環境、安裝的操作系統、相應軟件便構成了一臺虛擬機

而 Docker 對硬件資源,在不同docker container上做了隔離,使得每個docker container擁有不同的環境,同時可以共享硬件資源

20180711094611205.png

Startup:

        Docker在宿主機器的操作系統上創建Docker引擎,直接在宿主主機的操作系統上調用硬件資源,而不是虛擬化操作系統和硬件資源,所以操作速度快。

        這個其實安裝一個ubuntu的虛擬機和拉取一個Docker的ubuntu鏡像文件,運行一下就知道了,區別很明顯,虛擬機開一下大概得2分多鐘,而Docker只需要2秒鐘。

Integration:

Docker有著小巧、遷移部署快速、運行高效等特點,但隔離性比服務器虛擬化差:不同的集裝箱屬于不同的運單(Docker上運行不同的應用實例),相互獨立(隔離)。但由同一個庫管人員管理(主機操作系統內核),因此通過庫管人員可以看到所有集裝箱的相關信息(因為共享操作系統內核,因此相關信息會共享)。服務器虛擬化就好比在碼頭上(物理主機及虛擬化層),建立了多個獨立的“小碼頭”—倉庫(虛擬機)。其擁有完全獨立(隔離)的空間,屬于不同的客戶(虛擬機所有者)。每個倉庫有各自的庫管人員(當前虛擬機的操作系統內核),無法管理其它倉庫。不存在信息共享的情況

日常使用的基本概念

核心功能簡答介紹:

  • Docker是C/S模式

  • images:docker鏡像,是Docker run的原材料

  • container: Docker運行的內容,是獨立存在的

  • data volumes: 通過數據掛載的方式,實現數據共享

  • network:用戶容器與外部、容器之間的通信,常用的方法有端口映射、link等

使用流程

基本操作

  • docker version: 查看基本版本信息,包括client、server

關于鏡像的基本操作

  • docker search: 默認在 https://hub.docker.com 中查詢鏡像,當然可以修改registry

  • docker pull: 鏡像拉取 docker pull imageName:version

  • docker push: 鏡像提交

  • docker images: 查看本地鏡像

  • docker rmi: 刪除本地鏡像

  • docker build:利用 Dockerfile 制作鏡像,例如 docker build -t newImageName -f dockerFile [contextPath]

  • docker commit: 基于運行的 container 制作鏡像

關于容器的基本操作

  • docker run

    • 鏡像的運行

    • d: 在后臺運行

    • v: 用戶數據掛載

    • p: 端口映射,實現外部與容器之間的通信

    • rm: 容器推出時,直接刪除容器

    • i: 交互式的方式

    • t: 在容器中啟動一個終端

  • docker ps

    • 查詢當前存在的容器

    • a: 列出所有容器

    • q: 僅出 container id

  • dock exec: 在容器中執行命名,例如可以使用 docker exec -it containerId /bin/bash 進入到容器內部

  • docker stop: 停止容器的運行

  • docker restart: 重新啟動容器的運行

  • docker rm: 容器刪除

DockerFile

# 指定基礎鏡像
FROM NODE:10.12

## 從本地 copy 文件到鏡像中
COPY ./ /data/my-node/

## 切換 container 的工作目錄
WORKDIR /data/my/node

## 執行命令
RUN npm install

## 容器的啟動命名
ENTRYPOINT ["node", "./index.js"]

參考文章:


Docker與VM虛擬機的區別以及Docker的特點

使用Docker實現絲般順滑的持續集成

Docker&VM】docker容器與虛擬機有什么區別?

http://zhenhua-lee.github.io/container/docker.html