其實寫過好幾個版本的docker筆記來着,又應該來複習一下了。

主要參考:

- 第一本Docker书  [澳]詹姆斯•特恩布尔(James Turnbull)
- Docker技术入门与实战 第3版  杨保华 / 戴王剑 / 曹亚仑
- Docker实战【美】Jeff Nickoloff
- Docker经典实例  [美] Sébastien Goasguen

基本知識簡介

docker是基於go語言實現的開源容器項目。docker項目已加入linux基金會,並遵循apache 2.0協議。

虛擬化(virtualization)的核心始對資源的抽象。基於硬件的虛擬化如SR-IOV和基於軟件的虛擬化。基於軟件的虛擬化包括應用虛擬化如wine和平臺虛擬化。

平臺虛擬化又可以細分爲:

  • 完全虛擬化,如vmware workstation、virtualbox、qemu等。
  • 硬件輔助虛擬化。intel-vt,amd-v
  • 部分虛擬化。
  • 超虛擬化。早期的xen
  • 操作系統級虛擬化 內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程。如docker。不需要額外的supervisor支持。

核心概念

docker三大核心概念:

鏡像(image):類似虛擬機鏡像
容器(container):類似於輕量級沙箱,docker利用容器來運行和隔離應用。
倉庫(repository):集中存放鏡像文件的場所。公開倉庫(如docker hub)和私有倉庫。參考git和github的設計理念。

docker引擎是使用docker容器的核心組件。

基本使用

避免每次docker命令時候都需要切換到特權身份,可以將當前用戶加入安裝中自動創建的docker用戶組。sudo usermod -aG docker USER_NAME

查看基本情況:docker info 查看正在運行的容器: docker ps,查看全部容器:docker ps -a

獲取鏡像:docker pull 列出鏡像:docker images或者docker image ls

docker會爲創建的每一個容器自動生成一個隨機名字。制定名字需要使用–name參數來實現。