首先引用一下 《Docker – 從入門到實踐》的一段話:
一.爲什麼要用Docker
作爲一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有衆多的優勢。
首先,Docker 容器的啓動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啓動 10 個隔離的應用即可。
具體說來,Docker 在如下幾個方面具有較大的優勢。
更快速的交付和部署
對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。
開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創建容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。
更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
更輕鬆的遷移和擴展
Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。
更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。
對比傳統虛擬機總結
特性 | 容器 | 虛擬機 |
---|---|---|
啓動 | 秒級 | 分鐘級 |
硬盤使用 | 一般爲 MB | 一般爲 GB |
性能 | 接近原生 | 弱於 |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
二.自我總結的Docker簡單入門
1.獲取Docker:
apt-get install docker #Ubuntu
yum install docker #CentOS
pacman -S docker #Arch
2.獲取Docker鏡像:
由於是在國內,國外的很多docker鏡像源的速度實在感人,所以我推薦使用daocloud的鏡像倉庫,國內首個類似Docker Hub鏡像服務站點,用github賬號可以直接註冊登錄
在鏡像倉庫中我們發現了這個:
要使用docker首先需要打開docker的服務,以我的理解就是啓動Docker Machine
systemctl start docker #開啓docker服務
docker pull daocloud.io/library/ubuntu:precise-20160819 #拉取daocloud上的ubuntu鏡像
等待一會之後就會獲得全部Pull complete的結果
3.開啓一個docker容器
docker images #得到已經獲取的鏡像
docker run -ti a11 /bin/bash
這裏的a11的意思是我們下載的ubuntu的鏡像的id,在docker images中的 IMAGE ID,可以免去輸入daocloud.io/library/ubuntu的麻煩之處
docker run : 根據鏡像啓動一個容器
-i : 保持標準輸入打開
-t : 分配一個虛擬的TTY來進行操作
同時我們執行/bin/bash 之後ls一下
這樣,我們就擁有了一個跑着ubuntu可以進行bash操作的小容器
4.其他Docker命令:
實際上在命令行中打出 docker 便會顯示所有的命令,這裏只做一些翻譯與舉例
docker rm <容器名> # 刪除容器
docker rmi <鏡像名> # 刪除鏡像
docker start/stop/restart <容器名> # 開始/停止/重啓 一個容器
docker ps # 查看正在UP狀態的容器
docker ps -a # 查看所有容器
docker logs <容器名> # 顯示容器日誌
docker top <容器名> # 顯示容器中的進程
docker save <鏡像名> > <tar包名>.tar # 將鏡像打包成tar
docker load < <tar包> # 載入tar包的鏡像
docker export <容器名> > <tar包名>.tar # 將容器打包成tar
cat <tar包> | docker import <容器名> # 載入tar包的容器