Docker 基礎指南與基本指令操作
Docker 是一個開源的應用容器引擎,可以打包應用到一個輕量級、可移植的容器中,然後釋出到主流Linux系統上執行。比如把我們開發的Java Web專案打包到一個容器中,然後可以輕鬆移植到其他作業系統上執行。
Docker 和傳統虛擬化方式的不同之處,Docker容器是在作業系統層面上實現虛擬化,直接複用本地主機的作業系統,而傳統方式則是在硬體層面實現。容器除了執行其中應用外,基本不消耗額外的系統資源,使得應用的效能很高,同時系統的開銷儘量小。傳統虛擬機器方式執行 10 個不同的應用就要起 10 個虛擬機器,而Docker 只需要啟動 10 個隔離的應用即可。
Docker不是虛擬機器!
優點
- Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機器方式要快得多,容器之間不相互影響,隔離性好
- Docker 對系統資源的利用率很高
- 更快速的交付和部署,一次打包,到處部署
- 讓專案遷移和拓展變得更簡單
一、概念
Docker映象:類似於虛擬機器映象,是建立Docker容器的基礎。譬如一個Ubuntu映象。我pull下來,就可以通過run命令建立並啟動一個Ubuntu映象的容器例項。
Docker容器:類似於一個輕量級的沙箱,利用容器來執行和隔離應用。按我的理解,映象就像是容器的原始碼,容器就是映象的一個例項。每次操作映象建立一個容器,就相當於建立了一個映象的例項。每個容器都有自己的 root 檔案系統,每個容器都執行在自己的程序環境中同一個映象可以啟動多個容器例項!
Docker倉庫:有點類似與Git倉庫的味道,是存放映象檔案的場所。譬如說存放Ubuntu作業系統映象的倉庫稱為Ubuntu倉庫。可以從倉庫pull拉取映象也可以向倉庫push自己做的映象。
倉庫註冊伺服器:存放倉庫的地方。譬如Ubuntu倉庫,CentOS倉庫等等都存放在這裡。
Docker是C/S模式的,服務端(接收終端命令)和客戶端(輸入命令操作)都可以在本地主機同時執行。也可執行在不同的機器上通過socket或RESTful API通訊。
二、基礎操作
*安裝Docker就自行安裝了,這裡就不贅述了。下載地址:Docker Desktop
- docker version 檢視版本
- docker pull ubuntu:latest 預設從Docker Hub官方映象源下載映象,要從其他源倉庫下載要跟上倉庫地址。這裡以ubuntu映象為例。ubuntu是映象倉庫的名稱,latest是版本資訊。譬如可以下載指定版本的(ubuntu:14.04).
- docker images 檢視本地已有的映象,有來自於哪個倉庫,標籤,映象的唯一ID,大小,建立時間等資訊
- docker inspect ubuntu:latest 檢視映象詳細資訊
- docker create -it ubuntu:latest 基於某個映象建立一個容器例項,容器現在處於停止狀態,可以多次建立,每次建立都生成不同的容器,容器id唯一標識。引數i:讓容器的標準輸入保持開啟。引數t:讓Docker分配一個偽終端(pseudo-tty)並繫結到容器的標準輸入上
- docker ps 檢視執行狀態的容器
- docker ps -a 檢視所有的容器 包含停止狀態與執行狀態的
- docker start [容器id] 啟動一個容器
- docker restart [容器id] 重啟一個容器
- docker stop [容器id] 停止一個容器
- docker run ubuntu:latest 建立並啟動一個容器,run命令涵蓋create與start命令的操作。會現在本地找ubuntu:latest映象,沒有的話會去官方倉庫pull下來,然後建立並啟動一個基於此映象的容器。
- docker exec -it [容器id] /bin/bash 進入某個啟動了的容器,並開啟一個bash偽終端,當使用exit命令退出後,容器也會退出
- docker logs -f [容器id] 實時檢視容器日誌
- docker history ubuntu:latest 檢視映象歷史
- docker ps -qa 檢視所有容器id
- docker rm [容器id] 刪除容器 -f 強行終止並刪除一個執行中的容器
- docker rmi ubuntu:latest 刪除映象,也可以通過映象id刪除
- docker save -o ubuntu20180828.tar ubuntu:latest 匯出本地的ubuntu:latest映象為檔案ubuntu20180828.tar
- docker load –input ubuntu20180828.tar 匯入映象
Docker打包和分層的概念很重要。以ubuntu:latest為基礎映象,我在這個映象裡面做一系列操作,比如安裝個curl,vim,或者安裝個Nginx。然後再建立一個映象,此新映象就是在ubuntu:latest基礎映象的基礎上又涵蓋了我前面安裝的那些東東。每對映象做一次操作就會封裝一層,這個概念在下篇文章中用Dockerfile檔案建立自定義映象的時候就更好理解。